mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
Merge commit 'v2.6.34' into next
This commit is contained in:
commit
8d0bc2b456
938 changed files with 13494 additions and 6367 deletions
|
|
@ -101,6 +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);
|
||||
int bdi_setup_and_register(struct backing_dev_info *, char *, unsigned int);
|
||||
void bdi_start_writeback(struct backing_dev_info *bdi, struct super_block *sb,
|
||||
long nr_pages);
|
||||
int bdi_writeback_task(struct bdi_writeback *wb);
|
||||
|
|
@ -246,6 +247,7 @@ int bdi_set_max_ratio(struct backing_dev_info *bdi, unsigned int max_ratio);
|
|||
#endif
|
||||
|
||||
extern struct backing_dev_info default_backing_dev_info;
|
||||
extern struct backing_dev_info noop_backing_dev_info;
|
||||
void default_unplug_io_fn(struct backing_dev_info *bdi, struct page *page);
|
||||
|
||||
int writeback_in_progress(struct backing_dev_info *bdi);
|
||||
|
|
|
|||
|
|
@ -530,6 +530,7 @@ static inline struct cgroup_subsys_state *task_subsys_state(
|
|||
{
|
||||
return rcu_dereference_check(task->cgroups->subsys[subsys_id],
|
||||
rcu_read_lock_held() ||
|
||||
lockdep_is_held(&task->alloc_lock) ||
|
||||
cgroup_lock_is_held());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
#define MAX_CODADEVS 5 /* how many do we allow */
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/backing-dev.h>
|
||||
|
||||
struct kstatfs;
|
||||
|
||||
/* communication pending/processing queues */
|
||||
|
|
@ -17,6 +19,7 @@ struct venus_comm {
|
|||
struct list_head vc_processing;
|
||||
int vc_inuse;
|
||||
struct super_block *vc_sb;
|
||||
struct backing_dev_info bdi;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -186,6 +186,8 @@ d_iput: no no no yes
|
|||
|
||||
#define DCACHE_FSNOTIFY_PARENT_WATCHED 0x0080 /* Parent inode is watched by some fsnotify listener */
|
||||
|
||||
#define DCACHE_CANT_MOUNT 0x0100
|
||||
|
||||
extern spinlock_t dcache_lock;
|
||||
extern seqlock_t rename_lock;
|
||||
|
||||
|
|
@ -358,6 +360,18 @@ static inline int d_unlinked(struct dentry *dentry)
|
|||
return d_unhashed(dentry) && !IS_ROOT(dentry);
|
||||
}
|
||||
|
||||
static inline int cant_mount(struct dentry *dentry)
|
||||
{
|
||||
return (dentry->d_flags & DCACHE_CANT_MOUNT);
|
||||
}
|
||||
|
||||
static inline void dont_mount(struct dentry *dentry)
|
||||
{
|
||||
spin_lock(&dentry->d_lock);
|
||||
dentry->d_flags |= DCACHE_CANT_MOUNT;
|
||||
spin_unlock(&dentry->d_lock);
|
||||
}
|
||||
|
||||
static inline struct dentry *dget_parent(struct dentry *dentry)
|
||||
{
|
||||
struct dentry *ret;
|
||||
|
|
|
|||
|
|
@ -1,21 +1,26 @@
|
|||
/*
|
||||
* Char device interface.
|
||||
*
|
||||
* Copyright (C) 2005-2006 Kristian Hoegsberg <krh@bitplanet.net>
|
||||
* Copyright (C) 2005-2007 Kristian Hoegsberg <krh@bitplanet.net>
|
||||
*
|
||||
* 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.
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* 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.
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* 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.
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_FIREWIRE_CDEV_H
|
||||
|
|
@ -438,7 +443,7 @@ struct fw_cdev_remove_descriptor {
|
|||
* @type: %FW_CDEV_ISO_CONTEXT_TRANSMIT or %FW_CDEV_ISO_CONTEXT_RECEIVE
|
||||
* @header_size: Header size to strip for receive contexts
|
||||
* @channel: Channel to bind to
|
||||
* @speed: Speed to transmit at
|
||||
* @speed: Speed for transmit contexts
|
||||
* @closure: To be returned in &fw_cdev_event_iso_interrupt
|
||||
* @handle: Handle to context, written back by kernel
|
||||
*
|
||||
|
|
@ -451,6 +456,9 @@ struct fw_cdev_remove_descriptor {
|
|||
* If a context was successfully created, the kernel writes back a handle to the
|
||||
* context, which must be passed in for subsequent operations on that context.
|
||||
*
|
||||
* For receive contexts, @header_size must be at least 4 and must be a multiple
|
||||
* of 4.
|
||||
*
|
||||
* Note that the effect of a @header_size > 4 depends on
|
||||
* &fw_cdev_get_info.version, as documented at &fw_cdev_event_iso_interrupt.
|
||||
*/
|
||||
|
|
@ -481,10 +489,34 @@ struct fw_cdev_create_iso_context {
|
|||
*
|
||||
* &struct fw_cdev_iso_packet is used to describe isochronous packet queues.
|
||||
*
|
||||
* Use the FW_CDEV_ISO_ macros to fill in @control. The sy and tag fields are
|
||||
* specified by IEEE 1394a and IEC 61883.
|
||||
* Use the FW_CDEV_ISO_ macros to fill in @control.
|
||||
*
|
||||
* FIXME - finish this documentation
|
||||
* For transmit packets, the header length must be a multiple of 4 and specifies
|
||||
* the numbers of bytes in @header that will be prepended to the packet's
|
||||
* payload; these bytes are copied into the kernel and will not be accessed
|
||||
* after the ioctl has returned. The sy and tag fields are copied to the iso
|
||||
* packet header (these fields are specified by IEEE 1394a and IEC 61883-1).
|
||||
* The skip flag specifies that no packet is to be sent in a frame; when using
|
||||
* this, all other fields except the interrupt flag must be zero.
|
||||
*
|
||||
* For receive packets, the header length must be a multiple of the context's
|
||||
* header size; if the header length is larger than the context's header size,
|
||||
* multiple packets are queued for this entry. The sy and tag fields are
|
||||
* ignored. If the sync flag is set, the context drops all packets until
|
||||
* a packet with a matching sy field is received (the sync value to wait for is
|
||||
* specified in the &fw_cdev_start_iso structure). The payload length defines
|
||||
* how many payload bytes can be received for one packet (in addition to payload
|
||||
* quadlets that have been defined as headers and are stripped and returned in
|
||||
* the &fw_cdev_event_iso_interrupt structure). If more bytes are received, the
|
||||
* additional bytes are dropped. If less bytes are received, the remaining
|
||||
* bytes in this part of the payload buffer will not be written to, not even by
|
||||
* the next packet, i.e., packets received in consecutive frames will not
|
||||
* necessarily be consecutive in memory. If an entry has queued multiple
|
||||
* packets, the payload length is divided equally among them.
|
||||
*
|
||||
* When a packet with the interrupt flag set has been completed, the
|
||||
* &fw_cdev_event_iso_interrupt event will be sent. An entry that has queued
|
||||
* multiple receive packets is completed when its last packet is completed.
|
||||
*/
|
||||
struct fw_cdev_iso_packet {
|
||||
__u32 control;
|
||||
|
|
@ -501,7 +533,7 @@ struct fw_cdev_iso_packet {
|
|||
* Queue a number of isochronous packets for reception or transmission.
|
||||
* This ioctl takes a pointer to an array of &fw_cdev_iso_packet structs,
|
||||
* which describe how to transmit from or receive into a contiguous region
|
||||
* of a mmap()'ed payload buffer. As part of the packet descriptors,
|
||||
* of a mmap()'ed payload buffer. As part of transmit packet descriptors,
|
||||
* a series of headers can be supplied, which will be prepended to the
|
||||
* payload during DMA.
|
||||
*
|
||||
|
|
@ -620,8 +652,8 @@ struct fw_cdev_get_cycle_timer2 {
|
|||
* instead of allocated.
|
||||
* An %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event concludes this operation.
|
||||
*
|
||||
* To summarize, %FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE allocates iso resources
|
||||
* for the lifetime of the fd or handle.
|
||||
* To summarize, %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE allocates iso resources
|
||||
* for the lifetime of the fd or @handle.
|
||||
* In contrast, %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE allocates iso resources
|
||||
* for the duration of a bus generation.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,3 +1,28 @@
|
|||
/*
|
||||
* IEEE 1394 constants.
|
||||
*
|
||||
* Copyright (C) 2005-2007 Kristian Hoegsberg <krh@bitplanet.net>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_FIREWIRE_CONSTANTS_H
|
||||
#define _LINUX_FIREWIRE_CONSTANTS_H
|
||||
|
||||
|
|
@ -21,7 +46,7 @@
|
|||
#define EXTCODE_WRAP_ADD 0x6
|
||||
#define EXTCODE_VENDOR_DEPENDENT 0x7
|
||||
|
||||
/* Juju specific tcodes */
|
||||
/* Linux firewire-core (Juju) specific tcodes */
|
||||
#define TCODE_LOCK_MASK_SWAP (0x10 | EXTCODE_MASK_SWAP)
|
||||
#define TCODE_LOCK_COMPARE_SWAP (0x10 | EXTCODE_COMPARE_SWAP)
|
||||
#define TCODE_LOCK_FETCH_ADD (0x10 | EXTCODE_FETCH_ADD)
|
||||
|
|
@ -36,7 +61,7 @@
|
|||
#define RCODE_TYPE_ERROR 0x6
|
||||
#define RCODE_ADDRESS_ERROR 0x7
|
||||
|
||||
/* Juju specific rcodes */
|
||||
/* Linux firewire-core (Juju) specific rcodes */
|
||||
#define RCODE_SEND_ERROR 0x10
|
||||
#define RCODE_CANCELLED 0x11
|
||||
#define RCODE_BUSY 0x12
|
||||
|
|
|
|||
|
|
@ -2315,8 +2315,9 @@ extern int vfs_fstatat(int , char __user *, struct kstat *, int);
|
|||
extern int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
|
||||
unsigned long arg);
|
||||
extern int __generic_block_fiemap(struct inode *inode,
|
||||
struct fiemap_extent_info *fieinfo, u64 start,
|
||||
u64 len, get_block_t *get_block);
|
||||
struct fiemap_extent_info *fieinfo,
|
||||
loff_t start, loff_t len,
|
||||
get_block_t *get_block);
|
||||
extern int generic_block_fiemap(struct inode *inode,
|
||||
struct fiemap_extent_info *fieinfo, u64 start,
|
||||
u64 len, get_block_t *get_block);
|
||||
|
|
|
|||
|
|
@ -355,6 +355,8 @@ struct i2c_adapter {
|
|||
int nr;
|
||||
char name[48];
|
||||
struct completion dev_released;
|
||||
|
||||
struct list_head userspace_clients;
|
||||
};
|
||||
#define to_i2c_adapter(d) container_of(d, struct i2c_adapter, dev)
|
||||
|
||||
|
|
|
|||
|
|
@ -79,10 +79,7 @@ enum {
|
|||
IFLA_NET_NS_PID,
|
||||
IFLA_IFALIAS,
|
||||
IFLA_NUM_VF, /* Number of VFs if device is SR-IOV PF */
|
||||
IFLA_VF_MAC, /* Hardware queue specific attributes */
|
||||
IFLA_VF_VLAN,
|
||||
IFLA_VF_TX_RATE, /* TX Bandwidth Allocation */
|
||||
IFLA_VFINFO,
|
||||
IFLA_VFINFO_LIST,
|
||||
__IFLA_MAX
|
||||
};
|
||||
|
||||
|
|
@ -203,6 +200,24 @@ enum macvlan_mode {
|
|||
|
||||
/* SR-IOV virtual function managment section */
|
||||
|
||||
enum {
|
||||
IFLA_VF_INFO_UNSPEC,
|
||||
IFLA_VF_INFO,
|
||||
__IFLA_VF_INFO_MAX,
|
||||
};
|
||||
|
||||
#define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
|
||||
|
||||
enum {
|
||||
IFLA_VF_UNSPEC,
|
||||
IFLA_VF_MAC, /* Hardware queue specific attributes */
|
||||
IFLA_VF_VLAN,
|
||||
IFLA_VF_TX_RATE, /* TX Bandwidth Allocation */
|
||||
__IFLA_VF_MAX,
|
||||
};
|
||||
|
||||
#define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
|
||||
|
||||
struct ifla_vf_mac {
|
||||
__u32 vf;
|
||||
__u8 mac[32]; /* MAX_ADDR_LEN */
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ extern struct kmem_cache *kvm_vcpu_cache;
|
|||
*/
|
||||
struct kvm_io_bus {
|
||||
int dev_count;
|
||||
#define NR_IOBUS_DEVS 6
|
||||
#define NR_IOBUS_DEVS 200
|
||||
struct kvm_io_device *devs[NR_IOBUS_DEVS];
|
||||
};
|
||||
|
||||
|
|
@ -119,6 +119,11 @@ struct kvm_memory_slot {
|
|||
int user_alloc;
|
||||
};
|
||||
|
||||
static inline unsigned long kvm_dirty_bitmap_bytes(struct kvm_memory_slot *memslot)
|
||||
{
|
||||
return ALIGN(memslot->npages, BITS_PER_LONG) / 8;
|
||||
}
|
||||
|
||||
struct kvm_kernel_irq_routing_entry {
|
||||
u32 gsi;
|
||||
u32 type;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include <linux/ncp_mount.h>
|
||||
#include <linux/net.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/backing-dev.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
|
|
@ -127,6 +128,7 @@ struct ncp_server {
|
|||
size_t len;
|
||||
__u8 data[128];
|
||||
} unexpected_packet;
|
||||
struct backing_dev_info bdi;
|
||||
};
|
||||
|
||||
extern void ncp_tcp_rcv_proc(struct work_struct *work);
|
||||
|
|
|
|||
|
|
@ -209,6 +209,7 @@ struct nfs_inode {
|
|||
#define NFS_INO_FLUSHING (4) /* inode is flushing out data */
|
||||
#define NFS_INO_FSCACHE (5) /* inode can be cached by FS-Cache */
|
||||
#define NFS_INO_FSCACHE_LOCK (6) /* FS-Cache cookie management lock */
|
||||
#define NFS_INO_COMMIT (7) /* inode is committing unstable writes */
|
||||
|
||||
static inline struct nfs_inode *NFS_I(const struct inode *inode)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -176,6 +176,7 @@ struct nfs_server {
|
|||
#define NFS_CAP_ATIME (1U << 11)
|
||||
#define NFS_CAP_CTIME (1U << 12)
|
||||
#define NFS_CAP_MTIME (1U << 13)
|
||||
#define NFS_CAP_POSIX_LOCK (1U << 14)
|
||||
|
||||
|
||||
/* maximum number of slots to use */
|
||||
|
|
|
|||
|
|
@ -48,6 +48,15 @@
|
|||
#define POISON_FREE 0x6b /* for use-after-free poisoning */
|
||||
#define POISON_END 0xa5 /* end-byte of poisoning */
|
||||
|
||||
/********** mm/hugetlb.c **********/
|
||||
/*
|
||||
* Private mappings of hugetlb pages use this poisoned value for
|
||||
* page->mapping. The core VM should not be doing anything with this mapping
|
||||
* but futex requires the existence of some page->mapping value even though it
|
||||
* is unused if PAGE_MAPPING_ANON is set.
|
||||
*/
|
||||
#define HUGETLB_POISON ((void *)(0x00300300 + POISON_POINTER_DELTA + PAGE_MAPPING_ANON))
|
||||
|
||||
/********** arch/$ARCH/mm/init.c **********/
|
||||
#define POISON_FREE_INITMEM 0xcc
|
||||
|
||||
|
|
|
|||
|
|
@ -101,10 +101,7 @@ extern struct lockdep_map rcu_sched_lock_map;
|
|||
# define rcu_read_release_sched() \
|
||||
lock_release(&rcu_sched_lock_map, 1, _THIS_IP_)
|
||||
|
||||
static inline int debug_lockdep_rcu_enabled(void)
|
||||
{
|
||||
return likely(rcu_scheduler_active && debug_locks);
|
||||
}
|
||||
extern int debug_lockdep_rcu_enabled(void);
|
||||
|
||||
/**
|
||||
* rcu_read_lock_held - might we be in RCU read-side critical section?
|
||||
|
|
@ -193,14 +190,34 @@ static inline int rcu_read_lock_sched_held(void)
|
|||
|
||||
#ifdef CONFIG_PROVE_RCU
|
||||
|
||||
extern int rcu_my_thread_group_empty(void);
|
||||
|
||||
/**
|
||||
* rcu_dereference_check - rcu_dereference with debug checking
|
||||
* @p: The pointer to read, prior to dereferencing
|
||||
* @c: The conditions under which the dereference will take place
|
||||
*
|
||||
* Do an rcu_dereference(), but check that the context is correct.
|
||||
* For example, rcu_dereference_check(gp, rcu_read_lock_held()) to
|
||||
* ensure that the rcu_dereference_check() executes within an RCU
|
||||
* read-side critical section. It is also possible to check for
|
||||
* locks being held, for example, by using lockdep_is_held().
|
||||
* Do an rcu_dereference(), but check that the conditions under which the
|
||||
* dereference will take place are correct. Typically the conditions indicate
|
||||
* the various locking conditions that should be held at that point. The check
|
||||
* should return true if the conditions are satisfied.
|
||||
*
|
||||
* For example:
|
||||
*
|
||||
* bar = rcu_dereference_check(foo->bar, rcu_read_lock_held() ||
|
||||
* lockdep_is_held(&foo->lock));
|
||||
*
|
||||
* could be used to indicate to lockdep that foo->bar may only be dereferenced
|
||||
* if either the RCU read lock is held, or that the lock required to replace
|
||||
* the bar struct at foo->bar is held.
|
||||
*
|
||||
* Note that the list of conditions may also include indications of when a lock
|
||||
* need not be held, for example during initialisation or destruction of the
|
||||
* target struct:
|
||||
*
|
||||
* bar = rcu_dereference_check(foo->bar, rcu_read_lock_held() ||
|
||||
* lockdep_is_held(&foo->lock) ||
|
||||
* atomic_read(&foo->usage) == 0);
|
||||
*/
|
||||
#define rcu_dereference_check(p, c) \
|
||||
({ \
|
||||
|
|
@ -209,12 +226,44 @@ static inline int rcu_read_lock_sched_held(void)
|
|||
rcu_dereference_raw(p); \
|
||||
})
|
||||
|
||||
/**
|
||||
* rcu_dereference_protected - fetch RCU pointer when updates prevented
|
||||
*
|
||||
* Return the value of the specified RCU-protected pointer, but omit
|
||||
* both the smp_read_barrier_depends() and the ACCESS_ONCE(). This
|
||||
* is useful in cases where update-side locks prevent the value of the
|
||||
* pointer from changing. Please note that this primitive does -not-
|
||||
* prevent the compiler from repeating this reference or combining it
|
||||
* with other references, so it should not be used without protection
|
||||
* of appropriate locks.
|
||||
*/
|
||||
#define rcu_dereference_protected(p, c) \
|
||||
({ \
|
||||
if (debug_lockdep_rcu_enabled() && !(c)) \
|
||||
lockdep_rcu_dereference(__FILE__, __LINE__); \
|
||||
(p); \
|
||||
})
|
||||
|
||||
#else /* #ifdef CONFIG_PROVE_RCU */
|
||||
|
||||
#define rcu_dereference_check(p, c) rcu_dereference_raw(p)
|
||||
#define rcu_dereference_protected(p, c) (p)
|
||||
|
||||
#endif /* #else #ifdef CONFIG_PROVE_RCU */
|
||||
|
||||
/**
|
||||
* rcu_access_pointer - fetch RCU pointer with no dereferencing
|
||||
*
|
||||
* Return the value of the specified RCU-protected pointer, but omit the
|
||||
* smp_read_barrier_depends() and keep the ACCESS_ONCE(). This is useful
|
||||
* when the value of this pointer is accessed, but the pointer is not
|
||||
* dereferenced, for example, when testing an RCU-protected pointer against
|
||||
* NULL. This may also be used in cases where update-side locks prevent
|
||||
* the value of the pointer from changing, but rcu_dereference_protected()
|
||||
* is a lighter-weight primitive for this use case.
|
||||
*/
|
||||
#define rcu_access_pointer(p) ACCESS_ONCE(p)
|
||||
|
||||
/**
|
||||
* rcu_read_lock - mark the beginning of an RCU read-side critical section.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -183,9 +183,13 @@ static inline struct regulator *__must_check regulator_get(struct device *dev,
|
|||
{
|
||||
/* Nothing except the stubbed out regulator API should be
|
||||
* looking at the value except to check if it is an error
|
||||
* value so the actual return value doesn't matter.
|
||||
* value. Drivers are free to handle NULL specifically by
|
||||
* skipping all regulator API calls, but they don't have to.
|
||||
* Drivers which don't, should make sure they properly handle
|
||||
* corner cases of the API, such as regulator_get_voltage()
|
||||
* returning 0.
|
||||
*/
|
||||
return (struct regulator *)id;
|
||||
return NULL;
|
||||
}
|
||||
static inline void regulator_put(struct regulator *regulator)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1497,7 +1497,6 @@ struct task_struct {
|
|||
/* bitmask of trace recursion */
|
||||
unsigned long trace_recursion;
|
||||
#endif /* CONFIG_TRACING */
|
||||
unsigned long stack_start;
|
||||
#ifdef CONFIG_CGROUP_MEM_RES_CTLR /* memcg uses this to do batch job */
|
||||
struct memcg_batch_info {
|
||||
int do_batch; /* incremented when batch uncharge started */
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#define _SMB_FS_SB
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/backing-dev.h>
|
||||
#include <linux/smb.h>
|
||||
|
||||
/*
|
||||
|
|
@ -74,6 +75,8 @@ struct smb_sb_info {
|
|||
struct smb_ops *ops;
|
||||
|
||||
struct super_block *super_block;
|
||||
|
||||
struct backing_dev_info bdi;
|
||||
};
|
||||
|
||||
static inline int
|
||||
|
|
|
|||
|
|
@ -1085,7 +1085,7 @@ typedef void (*usb_complete_t)(struct urb *);
|
|||
* Alternatively, drivers may pass the URB_NO_xxx_DMA_MAP transfer flags,
|
||||
* which tell the host controller driver that no such mapping is needed since
|
||||
* the device driver is DMA-aware. For example, a device driver might
|
||||
* allocate a DMA buffer with usb_buffer_alloc() or call usb_buffer_map().
|
||||
* allocate a DMA buffer with usb_alloc_coherent() or call usb_buffer_map().
|
||||
* When these transfer flags are provided, host controller drivers will
|
||||
* attempt to use the dma addresses found in the transfer_dma and/or
|
||||
* setup_dma fields rather than determining a dma address themselves.
|
||||
|
|
@ -1366,11 +1366,23 @@ static inline int usb_urb_dir_out(struct urb *urb)
|
|||
return (urb->transfer_flags & URB_DIR_MASK) == URB_DIR_OUT;
|
||||
}
|
||||
|
||||
void *usb_buffer_alloc(struct usb_device *dev, size_t size,
|
||||
void *usb_alloc_coherent(struct usb_device *dev, size_t size,
|
||||
gfp_t mem_flags, dma_addr_t *dma);
|
||||
void usb_buffer_free(struct usb_device *dev, size_t size,
|
||||
void usb_free_coherent(struct usb_device *dev, size_t size,
|
||||
void *addr, dma_addr_t dma);
|
||||
|
||||
/* Compatible macros while we switch over */
|
||||
static inline void *usb_buffer_alloc(struct usb_device *dev, size_t size,
|
||||
gfp_t mem_flags, dma_addr_t *dma)
|
||||
{
|
||||
return usb_alloc_coherent(dev, size, mem_flags, dma);
|
||||
}
|
||||
static inline void usb_buffer_free(struct usb_device *dev, size_t size,
|
||||
void *addr, dma_addr_t dma)
|
||||
{
|
||||
return usb_free_coherent(dev, size, addr, dma);
|
||||
}
|
||||
|
||||
#if 0
|
||||
struct urb *usb_buffer_map(struct urb *urb);
|
||||
void usb_buffer_dmasync(struct urb *urb);
|
||||
|
|
|
|||
Loading…
Reference in a new issue