Merge branch 'regulator-drivers' into regulator-next
This commit is contained in:
@@ -140,6 +140,7 @@ struct kiocb {
|
||||
(x)->ki_dtor = NULL; \
|
||||
(x)->ki_obj.tsk = tsk; \
|
||||
(x)->ki_user_data = 0; \
|
||||
(x)->private = NULL; \
|
||||
} while (0)
|
||||
|
||||
#define AIO_RING_MAGIC 0xa10a10a1
|
||||
|
@@ -827,7 +827,6 @@ extern bool __blk_end_request_err(struct request *rq, int error);
|
||||
extern void blk_complete_request(struct request *);
|
||||
extern void __blk_complete_request(struct request *);
|
||||
extern void blk_abort_request(struct request *);
|
||||
extern void blk_abort_queue(struct request_queue *);
|
||||
extern void blk_unprep_request(struct request *);
|
||||
|
||||
/*
|
||||
|
@@ -91,6 +91,11 @@ extern void *__alloc_bootmem_node_nopanic(pg_data_t *pgdat,
|
||||
unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
void *___alloc_bootmem_node_nopanic(pg_data_t *pgdat,
|
||||
unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal,
|
||||
unsigned long limit);
|
||||
extern void *__alloc_bootmem_low(unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
|
@@ -22,8 +22,8 @@
|
||||
/* Gpio pin is open source */
|
||||
#define GPIOF_OPEN_SOURCE (1 << 3)
|
||||
|
||||
#define GPIOF_EXPORT (1 << 2)
|
||||
#define GPIOF_EXPORT_CHANGEABLE (1 << 3)
|
||||
#define GPIOF_EXPORT (1 << 4)
|
||||
#define GPIOF_EXPORT_CHANGEABLE (1 << 5)
|
||||
#define GPIOF_EXPORT_DIR_FIXED (GPIOF_EXPORT)
|
||||
#define GPIOF_EXPORT_DIR_CHANGEABLE (GPIOF_EXPORT | GPIOF_EXPORT_CHANGEABLE)
|
||||
|
||||
|
@@ -165,6 +165,7 @@ enum hrtimer_base_type {
|
||||
* @lock: lock protecting the base and associated clock bases
|
||||
* and timers
|
||||
* @active_bases: Bitfield to mark bases with active timers
|
||||
* @clock_was_set: Indicates that clock was set from irq context.
|
||||
* @expires_next: absolute time of the next event which was scheduled
|
||||
* via clock_set_next_event()
|
||||
* @hres_active: State of high resolution mode
|
||||
@@ -177,7 +178,8 @@ enum hrtimer_base_type {
|
||||
*/
|
||||
struct hrtimer_cpu_base {
|
||||
raw_spinlock_t lock;
|
||||
unsigned long active_bases;
|
||||
unsigned int active_bases;
|
||||
unsigned int clock_was_set;
|
||||
#ifdef CONFIG_HIGH_RES_TIMERS
|
||||
ktime_t expires_next;
|
||||
int hres_active;
|
||||
@@ -286,6 +288,8 @@ extern void hrtimer_peek_ahead_timers(void);
|
||||
# define MONOTONIC_RES_NSEC HIGH_RES_NSEC
|
||||
# define KTIME_MONOTONIC_RES KTIME_HIGH_RES
|
||||
|
||||
extern void clock_was_set_delayed(void);
|
||||
|
||||
#else
|
||||
|
||||
# define MONOTONIC_RES_NSEC LOW_RES_NSEC
|
||||
@@ -306,6 +310,9 @@ static inline int hrtimer_is_hres_active(struct hrtimer *timer)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void clock_was_set_delayed(void) { }
|
||||
|
||||
#endif
|
||||
|
||||
extern void clock_was_set(void);
|
||||
@@ -320,6 +327,7 @@ extern ktime_t ktime_get(void);
|
||||
extern ktime_t ktime_get_real(void);
|
||||
extern ktime_t ktime_get_boottime(void);
|
||||
extern ktime_t ktime_get_monotonic_offset(void);
|
||||
extern ktime_t ktime_get_update_offsets(ktime_t *offs_real, ktime_t *offs_boot);
|
||||
|
||||
DECLARE_PER_CPU(struct tick_device, tick_cpu_device);
|
||||
|
||||
|
@@ -116,6 +116,7 @@ struct input_keymap_entry {
|
||||
|
||||
/**
|
||||
* EVIOCGMTSLOTS(len) - get MT slot values
|
||||
* @len: size of the data buffer in bytes
|
||||
*
|
||||
* The ioctl buffer argument should be binary equivalent to
|
||||
*
|
||||
|
@@ -815,7 +815,7 @@ static inline void kvm_free_irq_routing(struct kvm *kvm) {}
|
||||
#ifdef CONFIG_HAVE_KVM_EVENTFD
|
||||
|
||||
void kvm_eventfd_init(struct kvm *kvm);
|
||||
int kvm_irqfd(struct kvm *kvm, int fd, int gsi, int flags);
|
||||
int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args);
|
||||
void kvm_irqfd_release(struct kvm *kvm);
|
||||
void kvm_irq_routing_update(struct kvm *, struct kvm_irq_routing_table *);
|
||||
int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args);
|
||||
@@ -824,7 +824,7 @@ int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args);
|
||||
|
||||
static inline void kvm_eventfd_init(struct kvm *kvm) {}
|
||||
|
||||
static inline int kvm_irqfd(struct kvm *kvm, int fd, int gsi, int flags)
|
||||
static inline int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@@ -50,9 +50,7 @@ phys_addr_t memblock_find_in_range_node(phys_addr_t start, phys_addr_t end,
|
||||
phys_addr_t size, phys_addr_t align, int nid);
|
||||
phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
|
||||
phys_addr_t size, phys_addr_t align);
|
||||
int memblock_free_reserved_regions(void);
|
||||
int memblock_reserve_reserved_regions(void);
|
||||
|
||||
phys_addr_t get_allocated_memblock_reserved_regions_info(phys_addr_t *addr);
|
||||
void memblock_allow_resize(void);
|
||||
int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid);
|
||||
int memblock_add(phys_addr_t base, phys_addr_t size);
|
||||
|
@@ -347,6 +347,7 @@ struct s5m_platform_data {
|
||||
bool buck_voltage_lock;
|
||||
|
||||
int buck_gpios[3];
|
||||
int buck_ds[3];
|
||||
int buck2_voltage[8];
|
||||
bool buck2_gpiodvs;
|
||||
int buck3_voltage[8];
|
||||
@@ -369,6 +370,10 @@ struct s5m_platform_data {
|
||||
bool buck2_ramp_enable;
|
||||
bool buck3_ramp_enable;
|
||||
bool buck4_ramp_enable;
|
||||
|
||||
int buck2_init;
|
||||
int buck3_init;
|
||||
int buck4_init;
|
||||
};
|
||||
|
||||
#endif /* __LINUX_MFD_S5M_CORE_H */
|
||||
|
@@ -217,7 +217,8 @@ enum tps65217_regulator_id {
|
||||
* Board data may be used to initialize regulator.
|
||||
*/
|
||||
struct tps65217_board {
|
||||
struct regulator_init_data *tps65217_init_data;
|
||||
struct regulator_init_data *tps65217_init_data[TPS65217_NUM_REGULATOR];
|
||||
struct device_node *of_node[TPS65217_NUM_REGULATOR];
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -227,11 +228,6 @@ struct tps65217_board {
|
||||
* @max_uV: minimum micro volts
|
||||
* @vsel_to_uv: Function pointer to get voltage from selector
|
||||
* @uv_to_vsel: Function pointer to get selector from voltage
|
||||
* @table: Table for non-uniform voltage step-size
|
||||
* @table_len: Length of the voltage table
|
||||
* @enable_mask: Regulator enable mask bits
|
||||
* @set_vout_reg: Regulator output voltage set register
|
||||
* @set_vout_mask: Regulator output voltage set mask
|
||||
*
|
||||
* This data is used to check the regualtor voltage limits while setting.
|
||||
*/
|
||||
@@ -241,11 +237,6 @@ struct tps_info {
|
||||
int max_uV;
|
||||
int (*vsel_to_uv)(unsigned int vsel);
|
||||
int (*uv_to_vsel)(int uV, unsigned int *vsel);
|
||||
const int *table;
|
||||
unsigned int table_len;
|
||||
unsigned int enable_mask;
|
||||
unsigned int set_vout_reg;
|
||||
unsigned int set_vout_mask;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -880,4 +880,10 @@ static inline int tps65910_reg_clear_bits(struct tps65910 *tps65910, u8 reg,
|
||||
return regmap_update_bits(tps65910->regmap, reg, mask, 0);
|
||||
}
|
||||
|
||||
static inline int tps65910_reg_update_bits(struct tps65910 *tps65910, u8 reg,
|
||||
u8 mask, u8 val)
|
||||
{
|
||||
return regmap_update_bits(tps65910->regmap, reg, mask, val);
|
||||
}
|
||||
|
||||
#endif /* __LINUX_MFD_TPS65910_H */
|
||||
|
@@ -694,7 +694,7 @@ typedef struct pglist_data {
|
||||
range, including holes */
|
||||
int node_id;
|
||||
wait_queue_head_t kswapd_wait;
|
||||
struct task_struct *kswapd;
|
||||
struct task_struct *kswapd; /* Protected by lock_memory_hotplug() */
|
||||
int kswapd_max_order;
|
||||
enum zone_type classzone_idx;
|
||||
} pg_data_t;
|
||||
|
@@ -176,8 +176,6 @@ enum pci_dev_flags {
|
||||
PCI_DEV_FLAGS_NO_D3 = (__force pci_dev_flags_t) 2,
|
||||
/* Provide indication device is assigned by a Virtual Machine Manager */
|
||||
PCI_DEV_FLAGS_ASSIGNED = (__force pci_dev_flags_t) 4,
|
||||
/* Device causes system crash if in D3 during S3 sleep */
|
||||
PCI_DEV_FLAGS_NO_D3_DURING_SLEEP = (__force pci_dev_flags_t) 8,
|
||||
};
|
||||
|
||||
enum pci_irq_reroute_variant {
|
||||
|
@@ -141,6 +141,8 @@
|
||||
* Changing LSM security domain is considered a new privilege. So, for example,
|
||||
* asking selinux for a specific new context (e.g. with runcon) will result
|
||||
* in execve returning -EPERM.
|
||||
*
|
||||
* See Documentation/prctl/no_new_privs.txt for more details.
|
||||
*/
|
||||
#define PR_SET_NO_NEW_PRIVS 38
|
||||
#define PR_GET_NO_NEW_PRIVS 39
|
||||
|
@@ -184,7 +184,6 @@ static inline int rcu_preempt_depth(void)
|
||||
/* Internal to kernel */
|
||||
extern void rcu_sched_qs(int cpu);
|
||||
extern void rcu_bh_qs(int cpu);
|
||||
extern void rcu_preempt_note_context_switch(void);
|
||||
extern void rcu_check_callbacks(int cpu, int user);
|
||||
struct notifier_block;
|
||||
extern void rcu_idle_enter(void);
|
||||
|
@@ -87,6 +87,10 @@ static inline void kfree_call_rcu(struct rcu_head *head,
|
||||
|
||||
#ifdef CONFIG_TINY_RCU
|
||||
|
||||
static inline void rcu_preempt_note_context_switch(void)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int rcu_needs_cpu(int cpu, unsigned long *delta_jiffies)
|
||||
{
|
||||
*delta_jiffies = ULONG_MAX;
|
||||
@@ -95,6 +99,7 @@ static inline int rcu_needs_cpu(int cpu, unsigned long *delta_jiffies)
|
||||
|
||||
#else /* #ifdef CONFIG_TINY_RCU */
|
||||
|
||||
void rcu_preempt_note_context_switch(void);
|
||||
int rcu_preempt_needs_cpu(void);
|
||||
|
||||
static inline int rcu_needs_cpu(int cpu, unsigned long *delta_jiffies)
|
||||
@@ -108,6 +113,7 @@ static inline int rcu_needs_cpu(int cpu, unsigned long *delta_jiffies)
|
||||
static inline void rcu_note_context_switch(int cpu)
|
||||
{
|
||||
rcu_sched_qs(cpu);
|
||||
rcu_preempt_note_context_switch();
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -69,6 +69,8 @@ enum regulator_status {
|
||||
*
|
||||
* @enable_time: Time taken for the regulator voltage output voltage to
|
||||
* stabilise after being enabled, in microseconds.
|
||||
* @set_ramp_delay: Set the ramp delay for the regulator. The driver should
|
||||
* select ramp delay equal to or less than(closest) ramp_delay.
|
||||
* @set_voltage_time_sel: Time taken for the regulator voltage output voltage
|
||||
* to stabilise after being set to a new value, in microseconds.
|
||||
* The function provides the from and to voltage selector, the
|
||||
@@ -115,6 +117,7 @@ struct regulator_ops {
|
||||
|
||||
/* Time taken to enable or set voltage on the regulator */
|
||||
int (*enable_time) (struct regulator_dev *);
|
||||
int (*set_ramp_delay) (struct regulator_dev *, int ramp_delay);
|
||||
int (*set_voltage_time_sel) (struct regulator_dev *,
|
||||
unsigned int old_selector,
|
||||
unsigned int new_selector);
|
||||
@@ -172,12 +175,15 @@ enum regulator_type {
|
||||
*
|
||||
* @min_uV: Voltage given by the lowest selector (if linear mapping)
|
||||
* @uV_step: Voltage increase with each selector (if linear mapping)
|
||||
* @ramp_delay: Time to settle down after voltage change (unit: uV/us)
|
||||
* @volt_table: Voltage mapping table (if table based mapping)
|
||||
*
|
||||
* @vsel_reg: Register for selector when using regulator_regmap_X_voltage_
|
||||
* @vsel_mask: Mask for register bitfield used for selector
|
||||
* @enable_reg: Register for control when using regmap enable/disable ops
|
||||
* @enable_mask: Mask for control when using regmap enable/disable ops
|
||||
*
|
||||
* @enable_time: Time taken for initial enable of regulator (in uS).
|
||||
*/
|
||||
struct regulator_desc {
|
||||
const char *name;
|
||||
@@ -191,6 +197,7 @@ struct regulator_desc {
|
||||
|
||||
unsigned int min_uV;
|
||||
unsigned int uV_step;
|
||||
unsigned int ramp_delay;
|
||||
|
||||
const unsigned int *volt_table;
|
||||
|
||||
@@ -198,6 +205,8 @@ struct regulator_desc {
|
||||
unsigned int vsel_mask;
|
||||
unsigned int enable_reg;
|
||||
unsigned int enable_mask;
|
||||
|
||||
unsigned int enable_time;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -213,6 +222,9 @@ struct regulator_desc {
|
||||
* @of_node: OpenFirmware node to parse for device tree bindings (may be
|
||||
* NULL).
|
||||
* @regmap: regmap to use for core regmap helpers
|
||||
* @ena_gpio: GPIO controlling regulator enable.
|
||||
* @ena_gpio_invert: Sense for GPIO enable control.
|
||||
* @ena_gpio_flags: Flags to use when calling gpio_request_one()
|
||||
*/
|
||||
struct regulator_config {
|
||||
struct device *dev;
|
||||
@@ -220,6 +232,10 @@ struct regulator_config {
|
||||
void *driver_data;
|
||||
struct device_node *of_node;
|
||||
struct regmap *regmap;
|
||||
|
||||
int ena_gpio;
|
||||
unsigned int ena_gpio_invert:1;
|
||||
unsigned int ena_gpio_flags;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -258,6 +274,10 @@ struct regulator_dev {
|
||||
void *reg_data; /* regulator_dev data */
|
||||
|
||||
struct dentry *debugfs;
|
||||
|
||||
int ena_gpio;
|
||||
unsigned int ena_gpio_invert:1;
|
||||
unsigned int ena_gpio_state:1;
|
||||
};
|
||||
|
||||
struct regulator_dev *
|
||||
@@ -287,6 +307,9 @@ int regulator_set_voltage_sel_regmap(struct regulator_dev *rdev, unsigned sel);
|
||||
int regulator_is_enabled_regmap(struct regulator_dev *rdev);
|
||||
int regulator_enable_regmap(struct regulator_dev *rdev);
|
||||
int regulator_disable_regmap(struct regulator_dev *rdev);
|
||||
int regulator_set_voltage_time_sel(struct regulator_dev *rdev,
|
||||
unsigned int old_selector,
|
||||
unsigned int new_selector);
|
||||
|
||||
void *regulator_get_init_drvdata(struct regulator_init_data *reg_init_data);
|
||||
|
||||
|
@@ -22,6 +22,7 @@ struct regulator_init_data;
|
||||
/**
|
||||
* struct fixed_voltage_config - fixed_voltage_config structure
|
||||
* @supply_name: Name of the regulator supply
|
||||
* @input_supply: Name of the input regulator supply
|
||||
* @microvolts: Output voltage of regulator
|
||||
* @gpio: GPIO to use for enable control
|
||||
* set to -EINVAL if not used
|
||||
@@ -46,6 +47,7 @@ struct regulator_init_data;
|
||||
*/
|
||||
struct fixed_voltage_config {
|
||||
const char *supply_name;
|
||||
const char *input_supply;
|
||||
int microvolts;
|
||||
int gpio;
|
||||
unsigned startup_delay;
|
||||
|
90
include/linux/regulator/lp872x.h
Normal file
90
include/linux/regulator/lp872x.h
Normal file
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright 2012 Texas Instruments
|
||||
*
|
||||
* Author: Milo(Woogyom) Kim <milo.kim@ti.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LP872X_REGULATOR_H__
|
||||
#define __LP872X_REGULATOR_H__
|
||||
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/gpio.h>
|
||||
|
||||
#define LP872X_MAX_REGULATORS 9
|
||||
|
||||
enum lp872x_regulator_id {
|
||||
LP8720_ID_BASE,
|
||||
LP8720_ID_LDO1 = LP8720_ID_BASE,
|
||||
LP8720_ID_LDO2,
|
||||
LP8720_ID_LDO3,
|
||||
LP8720_ID_LDO4,
|
||||
LP8720_ID_LDO5,
|
||||
LP8720_ID_BUCK,
|
||||
|
||||
LP8725_ID_BASE,
|
||||
LP8725_ID_LDO1 = LP8725_ID_BASE,
|
||||
LP8725_ID_LDO2,
|
||||
LP8725_ID_LDO3,
|
||||
LP8725_ID_LDO4,
|
||||
LP8725_ID_LDO5,
|
||||
LP8725_ID_LILO1,
|
||||
LP8725_ID_LILO2,
|
||||
LP8725_ID_BUCK1,
|
||||
LP8725_ID_BUCK2,
|
||||
|
||||
LP872X_ID_MAX,
|
||||
};
|
||||
|
||||
enum lp872x_dvs_state {
|
||||
DVS_LOW = GPIOF_OUT_INIT_LOW,
|
||||
DVS_HIGH = GPIOF_OUT_INIT_HIGH,
|
||||
};
|
||||
|
||||
enum lp872x_dvs_sel {
|
||||
SEL_V1,
|
||||
SEL_V2,
|
||||
};
|
||||
|
||||
/**
|
||||
* lp872x_dvs
|
||||
* @gpio : gpio pin number for dvs control
|
||||
* @vsel : dvs selector for buck v1 or buck v2 register
|
||||
* @init_state : initial dvs pin state
|
||||
*/
|
||||
struct lp872x_dvs {
|
||||
int gpio;
|
||||
enum lp872x_dvs_sel vsel;
|
||||
enum lp872x_dvs_state init_state;
|
||||
};
|
||||
|
||||
/**
|
||||
* lp872x_regdata
|
||||
* @id : regulator id
|
||||
* @init_data : init data for each regulator
|
||||
*/
|
||||
struct lp872x_regulator_data {
|
||||
enum lp872x_regulator_id id;
|
||||
struct regulator_init_data *init_data;
|
||||
};
|
||||
|
||||
/**
|
||||
* lp872x_platform_data
|
||||
* @general_config : the value of LP872X_GENERAL_CFG register
|
||||
* @update_config : if LP872X_GENERAL_CFG register is updated, set true
|
||||
* @regulator_data : platform regulator id and init data
|
||||
* @dvs : dvs data for buck voltage control
|
||||
*/
|
||||
struct lp872x_platform_data {
|
||||
u8 general_config;
|
||||
bool update_config;
|
||||
struct lp872x_regulator_data regulator_data[LP872X_MAX_REGULATORS];
|
||||
struct lp872x_dvs *dvs;
|
||||
};
|
||||
|
||||
#endif
|
@@ -92,6 +92,7 @@ struct regulator_state {
|
||||
* mode.
|
||||
* @initial_state: Suspend state to set by default.
|
||||
* @initial_mode: Mode to set at startup.
|
||||
* @ramp_delay: Time to settle down after voltage change (unit: uV/us)
|
||||
*/
|
||||
struct regulation_constraints {
|
||||
|
||||
@@ -125,6 +126,8 @@ struct regulation_constraints {
|
||||
/* mode to set on startup */
|
||||
unsigned int initial_mode;
|
||||
|
||||
unsigned int ramp_delay;
|
||||
|
||||
/* constraint flags */
|
||||
unsigned always_on:1; /* regulator never off when system is on */
|
||||
unsigned boot_on:1; /* bootloader/firmware enabled regulator */
|
||||
|
@@ -38,6 +38,8 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/kref.h>
|
||||
#include <linux/mutex.h>
|
||||
|
||||
/* The feature bitmap for virtio rpmsg */
|
||||
#define VIRTIO_RPMSG_F_NS 0 /* RP supports name service notifications */
|
||||
@@ -120,7 +122,9 @@ typedef void (*rpmsg_rx_cb_t)(struct rpmsg_channel *, void *, int, void *, u32);
|
||||
/**
|
||||
* struct rpmsg_endpoint - binds a local rpmsg address to its user
|
||||
* @rpdev: rpmsg channel device
|
||||
* @refcount: when this drops to zero, the ept is deallocated
|
||||
* @cb: rx callback handler
|
||||
* @cb_lock: must be taken before accessing/changing @cb
|
||||
* @addr: local rpmsg address
|
||||
* @priv: private data for the driver's use
|
||||
*
|
||||
@@ -140,7 +144,9 @@ typedef void (*rpmsg_rx_cb_t)(struct rpmsg_channel *, void *, int, void *, u32);
|
||||
*/
|
||||
struct rpmsg_endpoint {
|
||||
struct rpmsg_channel *rpdev;
|
||||
struct kref refcount;
|
||||
rpmsg_rx_cb_t cb;
|
||||
struct mutex cb_lock;
|
||||
u32 addr;
|
||||
void *priv;
|
||||
};
|
||||
|
@@ -1871,22 +1871,12 @@ static inline void rcu_copy_process(struct task_struct *p)
|
||||
INIT_LIST_HEAD(&p->rcu_node_entry);
|
||||
}
|
||||
|
||||
static inline void rcu_switch_from(struct task_struct *prev)
|
||||
{
|
||||
if (prev->rcu_read_lock_nesting != 0)
|
||||
rcu_preempt_note_context_switch();
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static inline void rcu_copy_process(struct task_struct *p)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void rcu_switch_from(struct task_struct *prev)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
@@ -1909,6 +1899,14 @@ static inline int set_cpus_allowed_ptr(struct task_struct *p,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NO_HZ
|
||||
void calc_load_enter_idle(void);
|
||||
void calc_load_exit_idle(void);
|
||||
#else
|
||||
static inline void calc_load_enter_idle(void) { }
|
||||
static inline void calc_load_exit_idle(void) { }
|
||||
#endif /* CONFIG_NO_HZ */
|
||||
|
||||
#ifndef CONFIG_CPUMASK_OFFSTACK
|
||||
static inline int set_cpus_allowed(struct task_struct *p, cpumask_t new_mask)
|
||||
{
|
||||
|
@@ -51,7 +51,8 @@ struct partial_page {
|
||||
struct splice_pipe_desc {
|
||||
struct page **pages; /* page map */
|
||||
struct partial_page *partial; /* pages[] may not be contig */
|
||||
int nr_pages; /* number of pages in map */
|
||||
int nr_pages; /* number of populated pages in map */
|
||||
unsigned int nr_pages_max; /* pages[] & partial[] arrays size */
|
||||
unsigned int flags; /* splice flags */
|
||||
const struct pipe_buf_operations *ops;/* ops associated with output pipe */
|
||||
void (*spd_release)(struct splice_pipe_desc *, unsigned int);
|
||||
@@ -85,9 +86,8 @@ extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *,
|
||||
/*
|
||||
* for dynamic pipe sizing
|
||||
*/
|
||||
extern int splice_grow_spd(struct pipe_inode_info *, struct splice_pipe_desc *);
|
||||
extern void splice_shrink_spd(struct pipe_inode_info *,
|
||||
struct splice_pipe_desc *);
|
||||
extern int splice_grow_spd(const struct pipe_inode_info *, struct splice_pipe_desc *);
|
||||
extern void splice_shrink_spd(struct splice_pipe_desc *);
|
||||
extern void spd_release_page(struct splice_pipe_desc *, unsigned int);
|
||||
|
||||
extern const struct pipe_buf_operations page_cache_pipe_buf_ops;
|
||||
|
Reference in New Issue
Block a user