mirror of
https://github.com/hardkernel/linux.git
synced 2026-05-30 07:46:36 +09:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
This commit is contained in:
@@ -235,6 +235,8 @@ struct drm_mode_fb_cmd {
|
||||
#define DRM_MODE_FB_DIRTY_ANNOTATE_FILL 0x02
|
||||
#define DRM_MODE_FB_DIRTY_FLAGS 0x03
|
||||
|
||||
#define DRM_MODE_FB_DIRTY_MAX_CLIPS 256
|
||||
|
||||
/*
|
||||
* Mark a region of a framebuffer as dirty.
|
||||
*
|
||||
|
||||
@@ -32,17 +32,16 @@
|
||||
/**
|
||||
* User-desired buffer creation information structure.
|
||||
*
|
||||
* @size: requested size for the object.
|
||||
* @size: user-desired memory allocation size.
|
||||
* - this size value would be page-aligned internally.
|
||||
* @flags: user request for setting memory type or cache attributes.
|
||||
* @handle: returned handle for the object.
|
||||
* @pad: just padding to be 64-bit aligned.
|
||||
* @handle: returned a handle to created gem object.
|
||||
* - this handle will be set by gem module of kernel side.
|
||||
*/
|
||||
struct drm_exynos_gem_create {
|
||||
unsigned int size;
|
||||
uint64_t size;
|
||||
unsigned int flags;
|
||||
unsigned int handle;
|
||||
unsigned int pad;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -874,6 +874,10 @@ struct drm_radeon_gem_pwrite {
|
||||
|
||||
#define RADEON_CHUNK_ID_RELOCS 0x01
|
||||
#define RADEON_CHUNK_ID_IB 0x02
|
||||
#define RADEON_CHUNK_ID_FLAGS 0x03
|
||||
|
||||
/* The first dword of RADEON_CHUNK_ID_FLAGS is a uint32 of these flags: */
|
||||
#define RADEON_CS_KEEP_TILING_FLAGS 0x01
|
||||
|
||||
struct drm_radeon_cs_chunk {
|
||||
uint32_t chunk_id;
|
||||
|
||||
@@ -10,6 +10,12 @@
|
||||
#include "osdmap.h"
|
||||
#include "messenger.h"
|
||||
|
||||
/*
|
||||
* Maximum object name size
|
||||
* (must be at least as big as RBD_MAX_MD_NAME_LEN -- currently 100)
|
||||
*/
|
||||
#define MAX_OBJ_NAME_SIZE 100
|
||||
|
||||
struct ceph_msg;
|
||||
struct ceph_snap_context;
|
||||
struct ceph_osd_request;
|
||||
@@ -75,7 +81,7 @@ struct ceph_osd_request {
|
||||
struct inode *r_inode; /* for use by callbacks */
|
||||
void *r_priv; /* ditto */
|
||||
|
||||
char r_oid[40]; /* object name */
|
||||
char r_oid[MAX_OBJ_NAME_SIZE]; /* object name */
|
||||
int r_oid_len;
|
||||
unsigned long r_stamp; /* send OR check time */
|
||||
|
||||
|
||||
@@ -156,6 +156,7 @@ extern u64 timecounter_cyc2time(struct timecounter *tc,
|
||||
* @mult: cycle to nanosecond multiplier
|
||||
* @shift: cycle to nanosecond divisor (power of two)
|
||||
* @max_idle_ns: max idle time permitted by the clocksource (nsecs)
|
||||
* @maxadj maximum adjustment value to mult (~11%)
|
||||
* @flags: flags describing special properties
|
||||
* @archdata: arch-specific data
|
||||
* @suspend: suspend function for the clocksource, if necessary
|
||||
@@ -172,7 +173,7 @@ struct clocksource {
|
||||
u32 mult;
|
||||
u32 shift;
|
||||
u64 max_idle_ns;
|
||||
|
||||
u32 maxadj;
|
||||
#ifdef CONFIG_ARCH_CLOCKSOURCE_DATA
|
||||
struct arch_clocksource_data archdata;
|
||||
#endif
|
||||
|
||||
@@ -69,7 +69,7 @@ extern void bus_remove_file(struct bus_type *, struct bus_attribute *);
|
||||
* @resume: Called to bring a device on this bus out of sleep mode.
|
||||
* @pm: Power management operations of this bus, callback the specific
|
||||
* device driver's pm-ops.
|
||||
* @iommu_ops IOMMU specific operations for this bus, used to attach IOMMU
|
||||
* @iommu_ops: IOMMU specific operations for this bus, used to attach IOMMU
|
||||
* driver implementations to a bus and allow the driver to do
|
||||
* bus-specific setup
|
||||
* @p: The private data of the driver core, only the driver core can
|
||||
|
||||
@@ -432,9 +432,6 @@ void i2c_unlock_adapter(struct i2c_adapter *);
|
||||
/* Internal numbers to terminate lists */
|
||||
#define I2C_CLIENT_END 0xfffeU
|
||||
|
||||
/* The numbers to use to set I2C bus address */
|
||||
#define ANY_I2C_BUS 0xffff
|
||||
|
||||
/* Construct an I2C_CLIENT_END-terminated array of i2c addresses */
|
||||
#define I2C_ADDRS(addr, addrs...) \
|
||||
((const unsigned short []){ addr, ## addrs, I2C_CLIENT_END })
|
||||
|
||||
@@ -184,7 +184,6 @@ extern struct cred init_cred;
|
||||
[PIDTYPE_SID] = INIT_PID_LINK(PIDTYPE_SID), \
|
||||
}, \
|
||||
.thread_group = LIST_HEAD_INIT(tsk.thread_group), \
|
||||
.dirties = INIT_PROP_LOCAL_SINGLE(dirties), \
|
||||
INIT_IDS \
|
||||
INIT_PERF_EVENTS(tsk) \
|
||||
INIT_TRACE_IRQFLAGS \
|
||||
|
||||
@@ -243,7 +243,8 @@
|
||||
|
||||
|
||||
/*Registers VDD1, VDD2 voltage values definitions */
|
||||
#define VDD1_2_NUM_VOLTS 73
|
||||
#define VDD1_2_NUM_VOLT_FINE 73
|
||||
#define VDD1_2_NUM_VOLT_COARSE 3
|
||||
#define VDD1_2_MIN_VOLT 6000
|
||||
#define VDD1_2_OFFSET 125
|
||||
|
||||
|
||||
@@ -2552,6 +2552,8 @@ extern void net_disable_timestamp(void);
|
||||
extern void *dev_seq_start(struct seq_file *seq, loff_t *pos);
|
||||
extern void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos);
|
||||
extern void dev_seq_stop(struct seq_file *seq, void *v);
|
||||
extern int dev_seq_open_ops(struct inode *inode, struct file *file,
|
||||
const struct seq_operations *ops);
|
||||
#endif
|
||||
|
||||
extern int netdev_class_create_file(struct class_attribute *class_attr);
|
||||
|
||||
@@ -410,6 +410,9 @@ extern const struct inode_operations nfs_file_inode_operations;
|
||||
extern const struct inode_operations nfs3_file_inode_operations;
|
||||
#endif /* CONFIG_NFS_V3 */
|
||||
extern const struct file_operations nfs_file_operations;
|
||||
#ifdef CONFIG_NFS_V4
|
||||
extern const struct file_operations nfs4_file_operations;
|
||||
#endif /* CONFIG_NFS_V4 */
|
||||
extern const struct address_space_operations nfs_file_aops;
|
||||
extern const struct address_space_operations nfs_dir_aops;
|
||||
|
||||
|
||||
@@ -1192,6 +1192,7 @@ struct nfs_rpc_ops {
|
||||
const struct dentry_operations *dentry_ops;
|
||||
const struct inode_operations *dir_inode_ops;
|
||||
const struct inode_operations *file_inode_ops;
|
||||
const struct file_operations *file_ops;
|
||||
|
||||
int (*getroot) (struct nfs_server *, struct nfs_fh *,
|
||||
struct nfs_fsinfo *);
|
||||
|
||||
@@ -12,7 +12,7 @@ struct pci_ats {
|
||||
unsigned int is_enabled:1; /* Enable bit is set */
|
||||
};
|
||||
|
||||
#ifdef CONFIG_PCI_IOV
|
||||
#ifdef CONFIG_PCI_ATS
|
||||
|
||||
extern int pci_enable_ats(struct pci_dev *dev, int ps);
|
||||
extern void pci_disable_ats(struct pci_dev *dev);
|
||||
@@ -29,7 +29,7 @@ static inline int pci_ats_enabled(struct pci_dev *dev)
|
||||
return dev->ats && dev->ats->is_enabled;
|
||||
}
|
||||
|
||||
#else /* CONFIG_PCI_IOV */
|
||||
#else /* CONFIG_PCI_ATS */
|
||||
|
||||
static inline int pci_enable_ats(struct pci_dev *dev, int ps)
|
||||
{
|
||||
@@ -50,7 +50,7 @@ static inline int pci_ats_enabled(struct pci_dev *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_PCI_IOV */
|
||||
#endif /* CONFIG_PCI_ATS */
|
||||
|
||||
#ifdef CONFIG_PCI_PRI
|
||||
|
||||
|
||||
@@ -338,7 +338,7 @@ struct pci_dev {
|
||||
struct list_head msi_list;
|
||||
#endif
|
||||
struct pci_vpd *vpd;
|
||||
#ifdef CONFIG_PCI_IOV
|
||||
#ifdef CONFIG_PCI_ATS
|
||||
union {
|
||||
struct pci_sriov *sriov; /* SR-IOV capability related */
|
||||
struct pci_dev *physfn; /* the PF this VF is associated with */
|
||||
|
||||
@@ -54,118 +54,145 @@ typedef struct pm_message {
|
||||
/**
|
||||
* struct dev_pm_ops - device PM callbacks
|
||||
*
|
||||
* Several driver power state transitions are externally visible, affecting
|
||||
* Several device power state transitions are externally visible, affecting
|
||||
* the state of pending I/O queues and (for drivers that touch hardware)
|
||||
* interrupts, wakeups, DMA, and other hardware state. There may also be
|
||||
* internal transitions to various low power modes, which are transparent
|
||||
* internal transitions to various low-power modes which are transparent
|
||||
* to the rest of the driver stack (such as a driver that's ON gating off
|
||||
* clocks which are not in active use).
|
||||
*
|
||||
* The externally visible transitions are handled with the help of the following
|
||||
* callbacks included in this structure:
|
||||
* The externally visible transitions are handled with the help of callbacks
|
||||
* included in this structure in such a way that two levels of callbacks are
|
||||
* involved. First, the PM core executes callbacks provided by PM domains,
|
||||
* device types, classes and bus types. They are the subsystem-level callbacks
|
||||
* supposed to execute callbacks provided by device drivers, although they may
|
||||
* choose not to do that. If the driver callbacks are executed, they have to
|
||||
* collaborate with the subsystem-level callbacks to achieve the goals
|
||||
* appropriate for the given system transition, given transition phase and the
|
||||
* subsystem the device belongs to.
|
||||
*
|
||||
* @prepare: Prepare the device for the upcoming transition, but do NOT change
|
||||
* its hardware state. Prevent new children of the device from being
|
||||
* registered after @prepare() returns (the driver's subsystem and
|
||||
* generally the rest of the kernel is supposed to prevent new calls to the
|
||||
* probe method from being made too once @prepare() has succeeded). If
|
||||
* @prepare() detects a situation it cannot handle (e.g. registration of a
|
||||
* child already in progress), it may return -EAGAIN, so that the PM core
|
||||
* can execute it once again (e.g. after the new child has been registered)
|
||||
* to recover from the race condition. This method is executed for all
|
||||
* kinds of suspend transitions and is followed by one of the suspend
|
||||
* callbacks: @suspend(), @freeze(), or @poweroff().
|
||||
* The PM core executes @prepare() for all devices before starting to
|
||||
* execute suspend callbacks for any of them, so drivers may assume all of
|
||||
* the other devices to be present and functional while @prepare() is being
|
||||
* executed. In particular, it is safe to make GFP_KERNEL memory
|
||||
* allocations from within @prepare(). However, drivers may NOT assume
|
||||
* anything about the availability of the user space at that time and it
|
||||
* is not correct to request firmware from within @prepare() (it's too
|
||||
* late to do that). [To work around this limitation, drivers may
|
||||
* register suspend and hibernation notifiers that are executed before the
|
||||
* freezing of tasks.]
|
||||
* @prepare: The principal role of this callback is to prevent new children of
|
||||
* the device from being registered after it has returned (the driver's
|
||||
* subsystem and generally the rest of the kernel is supposed to prevent
|
||||
* new calls to the probe method from being made too once @prepare() has
|
||||
* succeeded). If @prepare() detects a situation it cannot handle (e.g.
|
||||
* registration of a child already in progress), it may return -EAGAIN, so
|
||||
* that the PM core can execute it once again (e.g. after a new child has
|
||||
* been registered) to recover from the race condition.
|
||||
* This method is executed for all kinds of suspend transitions and is
|
||||
* followed by one of the suspend callbacks: @suspend(), @freeze(), or
|
||||
* @poweroff(). The PM core executes subsystem-level @prepare() for all
|
||||
* devices before starting to invoke suspend callbacks for any of them, so
|
||||
* generally devices may be assumed to be functional or to respond to
|
||||
* runtime resume requests while @prepare() is being executed. However,
|
||||
* device drivers may NOT assume anything about the availability of user
|
||||
* space at that time and it is NOT valid to request firmware from within
|
||||
* @prepare() (it's too late to do that). It also is NOT valid to allocate
|
||||
* substantial amounts of memory from @prepare() in the GFP_KERNEL mode.
|
||||
* [To work around these limitations, drivers may register suspend and
|
||||
* hibernation notifiers to be executed before the freezing of tasks.]
|
||||
*
|
||||
* @complete: Undo the changes made by @prepare(). This method is executed for
|
||||
* all kinds of resume transitions, following one of the resume callbacks:
|
||||
* @resume(), @thaw(), @restore(). Also called if the state transition
|
||||
* fails before the driver's suspend callback (@suspend(), @freeze(),
|
||||
* @poweroff()) can be executed (e.g. if the suspend callback fails for one
|
||||
* fails before the driver's suspend callback: @suspend(), @freeze() or
|
||||
* @poweroff(), can be executed (e.g. if the suspend callback fails for one
|
||||
* of the other devices that the PM core has unsuccessfully attempted to
|
||||
* suspend earlier).
|
||||
* The PM core executes @complete() after it has executed the appropriate
|
||||
* resume callback for all devices.
|
||||
* The PM core executes subsystem-level @complete() after it has executed
|
||||
* the appropriate resume callbacks for all devices.
|
||||
*
|
||||
* @suspend: Executed before putting the system into a sleep state in which the
|
||||
* contents of main memory are preserved. Quiesce the device, put it into
|
||||
* a low power state appropriate for the upcoming system state (such as
|
||||
* PCI_D3hot), and enable wakeup events as appropriate.
|
||||
* contents of main memory are preserved. The exact action to perform
|
||||
* depends on the device's subsystem (PM domain, device type, class or bus
|
||||
* type), but generally the device must be quiescent after subsystem-level
|
||||
* @suspend() has returned, so that it doesn't do any I/O or DMA.
|
||||
* Subsystem-level @suspend() is executed for all devices after invoking
|
||||
* subsystem-level @prepare() for all of them.
|
||||
*
|
||||
* @resume: Executed after waking the system up from a sleep state in which the
|
||||
* contents of main memory were preserved. Put the device into the
|
||||
* appropriate state, according to the information saved in memory by the
|
||||
* preceding @suspend(). The driver starts working again, responding to
|
||||
* hardware events and software requests. The hardware may have gone
|
||||
* through a power-off reset, or it may have maintained state from the
|
||||
* previous suspend() which the driver may rely on while resuming. On most
|
||||
* platforms, there are no restrictions on availability of resources like
|
||||
* clocks during @resume().
|
||||
* contents of main memory were preserved. The exact action to perform
|
||||
* depends on the device's subsystem, but generally the driver is expected
|
||||
* to start working again, responding to hardware events and software
|
||||
* requests (the device itself may be left in a low-power state, waiting
|
||||
* for a runtime resume to occur). The state of the device at the time its
|
||||
* driver's @resume() callback is run depends on the platform and subsystem
|
||||
* the device belongs to. On most platforms, there are no restrictions on
|
||||
* availability of resources like clocks during @resume().
|
||||
* Subsystem-level @resume() is executed for all devices after invoking
|
||||
* subsystem-level @resume_noirq() for all of them.
|
||||
*
|
||||
* @freeze: Hibernation-specific, executed before creating a hibernation image.
|
||||
* Quiesce operations so that a consistent image can be created, but do NOT
|
||||
* otherwise put the device into a low power device state and do NOT emit
|
||||
* system wakeup events. Save in main memory the device settings to be
|
||||
* used by @restore() during the subsequent resume from hibernation or by
|
||||
* the subsequent @thaw(), if the creation of the image or the restoration
|
||||
* of main memory contents from it fails.
|
||||
* Analogous to @suspend(), but it should not enable the device to signal
|
||||
* wakeup events or change its power state. The majority of subsystems
|
||||
* (with the notable exception of the PCI bus type) expect the driver-level
|
||||
* @freeze() to save the device settings in memory to be used by @restore()
|
||||
* during the subsequent resume from hibernation.
|
||||
* Subsystem-level @freeze() is executed for all devices after invoking
|
||||
* subsystem-level @prepare() for all of them.
|
||||
*
|
||||
* @thaw: Hibernation-specific, executed after creating a hibernation image OR
|
||||
* if the creation of the image fails. Also executed after a failing
|
||||
* if the creation of an image has failed. Also executed after a failing
|
||||
* attempt to restore the contents of main memory from such an image.
|
||||
* Undo the changes made by the preceding @freeze(), so the device can be
|
||||
* operated in the same way as immediately before the call to @freeze().
|
||||
* Subsystem-level @thaw() is executed for all devices after invoking
|
||||
* subsystem-level @thaw_noirq() for all of them. It also may be executed
|
||||
* directly after @freeze() in case of a transition error.
|
||||
*
|
||||
* @poweroff: Hibernation-specific, executed after saving a hibernation image.
|
||||
* Quiesce the device, put it into a low power state appropriate for the
|
||||
* upcoming system state (such as PCI_D3hot), and enable wakeup events as
|
||||
* appropriate.
|
||||
* Analogous to @suspend(), but it need not save the device's settings in
|
||||
* memory.
|
||||
* Subsystem-level @poweroff() is executed for all devices after invoking
|
||||
* subsystem-level @prepare() for all of them.
|
||||
*
|
||||
* @restore: Hibernation-specific, executed after restoring the contents of main
|
||||
* memory from a hibernation image. Driver starts working again,
|
||||
* responding to hardware events and software requests. Drivers may NOT
|
||||
* make ANY assumptions about the hardware state right prior to @restore().
|
||||
* On most platforms, there are no restrictions on availability of
|
||||
* resources like clocks during @restore().
|
||||
* memory from a hibernation image, analogous to @resume().
|
||||
*
|
||||
* @suspend_noirq: Complete the operations of ->suspend() by carrying out any
|
||||
* actions required for suspending the device that need interrupts to be
|
||||
* disabled
|
||||
* @suspend_noirq: Complete the actions started by @suspend(). Carry out any
|
||||
* additional operations required for suspending the device that might be
|
||||
* racing with its driver's interrupt handler, which is guaranteed not to
|
||||
* run while @suspend_noirq() is being executed.
|
||||
* It generally is expected that the device will be in a low-power state
|
||||
* (appropriate for the target system sleep state) after subsystem-level
|
||||
* @suspend_noirq() has returned successfully. If the device can generate
|
||||
* system wakeup signals and is enabled to wake up the system, it should be
|
||||
* configured to do so at that time. However, depending on the platform
|
||||
* and device's subsystem, @suspend() may be allowed to put the device into
|
||||
* the low-power state and configure it to generate wakeup signals, in
|
||||
* which case it generally is not necessary to define @suspend_noirq().
|
||||
*
|
||||
* @resume_noirq: Prepare for the execution of ->resume() by carrying out any
|
||||
* actions required for resuming the device that need interrupts to be
|
||||
* disabled
|
||||
* @resume_noirq: Prepare for the execution of @resume() by carrying out any
|
||||
* operations required for resuming the device that might be racing with
|
||||
* its driver's interrupt handler, which is guaranteed not to run while
|
||||
* @resume_noirq() is being executed.
|
||||
*
|
||||
* @freeze_noirq: Complete the operations of ->freeze() by carrying out any
|
||||
* actions required for freezing the device that need interrupts to be
|
||||
* disabled
|
||||
* @freeze_noirq: Complete the actions started by @freeze(). Carry out any
|
||||
* additional operations required for freezing the device that might be
|
||||
* racing with its driver's interrupt handler, which is guaranteed not to
|
||||
* run while @freeze_noirq() is being executed.
|
||||
* The power state of the device should not be changed by either @freeze()
|
||||
* or @freeze_noirq() and it should not be configured to signal system
|
||||
* wakeup by any of these callbacks.
|
||||
*
|
||||
* @thaw_noirq: Prepare for the execution of ->thaw() by carrying out any
|
||||
* actions required for thawing the device that need interrupts to be
|
||||
* disabled
|
||||
* @thaw_noirq: Prepare for the execution of @thaw() by carrying out any
|
||||
* operations required for thawing the device that might be racing with its
|
||||
* driver's interrupt handler, which is guaranteed not to run while
|
||||
* @thaw_noirq() is being executed.
|
||||
*
|
||||
* @poweroff_noirq: Complete the operations of ->poweroff() by carrying out any
|
||||
* actions required for handling the device that need interrupts to be
|
||||
* disabled
|
||||
* @poweroff_noirq: Complete the actions started by @poweroff(). Analogous to
|
||||
* @suspend_noirq(), but it need not save the device's settings in memory.
|
||||
*
|
||||
* @restore_noirq: Prepare for the execution of ->restore() by carrying out any
|
||||
* actions required for restoring the operations of the device that need
|
||||
* interrupts to be disabled
|
||||
* @restore_noirq: Prepare for the execution of @restore() by carrying out any
|
||||
* operations required for thawing the device that might be racing with its
|
||||
* driver's interrupt handler, which is guaranteed not to run while
|
||||
* @restore_noirq() is being executed. Analogous to @resume_noirq().
|
||||
*
|
||||
* All of the above callbacks, except for @complete(), return error codes.
|
||||
* However, the error codes returned by the resume operations, @resume(),
|
||||
* @thaw(), @restore(), @resume_noirq(), @thaw_noirq(), and @restore_noirq() do
|
||||
* @thaw(), @restore(), @resume_noirq(), @thaw_noirq(), and @restore_noirq(), do
|
||||
* not cause the PM core to abort the resume transition during which they are
|
||||
* returned. The error codes returned in that cases are only printed by the PM
|
||||
* returned. The error codes returned in those cases are only printed by the PM
|
||||
* core to the system logs for debugging purposes. Still, it is recommended
|
||||
* that drivers only return error codes from their resume methods in case of an
|
||||
* unrecoverable failure (i.e. when the device being handled refuses to resume
|
||||
@@ -174,31 +201,43 @@ typedef struct pm_message {
|
||||
* their children.
|
||||
*
|
||||
* It is allowed to unregister devices while the above callbacks are being
|
||||
* executed. However, it is not allowed to unregister a device from within any
|
||||
* of its own callbacks.
|
||||
* executed. However, a callback routine must NOT try to unregister the device
|
||||
* it was called for, although it may unregister children of that device (for
|
||||
* example, if it detects that a child was unplugged while the system was
|
||||
* asleep).
|
||||
*
|
||||
* There also are the following callbacks related to run-time power management
|
||||
* of devices:
|
||||
* Refer to Documentation/power/devices.txt for more information about the role
|
||||
* of the above callbacks in the system suspend process.
|
||||
*
|
||||
* There also are callbacks related to runtime power management of devices.
|
||||
* Again, these callbacks are executed by the PM core only for subsystems
|
||||
* (PM domains, device types, classes and bus types) and the subsystem-level
|
||||
* callbacks are supposed to invoke the driver callbacks. Moreover, the exact
|
||||
* actions to be performed by a device driver's callbacks generally depend on
|
||||
* the platform and subsystem the device belongs to.
|
||||
*
|
||||
* @runtime_suspend: Prepare the device for a condition in which it won't be
|
||||
* able to communicate with the CPU(s) and RAM due to power management.
|
||||
* This need not mean that the device should be put into a low power state.
|
||||
* This need not mean that the device should be put into a low-power state.
|
||||
* For example, if the device is behind a link which is about to be turned
|
||||
* off, the device may remain at full power. If the device does go to low
|
||||
* power and is capable of generating run-time wake-up events, remote
|
||||
* wake-up (i.e., a hardware mechanism allowing the device to request a
|
||||
* change of its power state via a wake-up event, such as PCI PME) should
|
||||
* be enabled for it.
|
||||
* power and is capable of generating runtime wakeup events, remote wakeup
|
||||
* (i.e., a hardware mechanism allowing the device to request a change of
|
||||
* its power state via an interrupt) should be enabled for it.
|
||||
*
|
||||
* @runtime_resume: Put the device into the fully active state in response to a
|
||||
* wake-up event generated by hardware or at the request of software. If
|
||||
* necessary, put the device into the full power state and restore its
|
||||
* wakeup event generated by hardware or at the request of software. If
|
||||
* necessary, put the device into the full-power state and restore its
|
||||
* registers, so that it is fully operational.
|
||||
*
|
||||
* @runtime_idle: Device appears to be inactive and it might be put into a low
|
||||
* power state if all of the necessary conditions are satisfied. Check
|
||||
* @runtime_idle: Device appears to be inactive and it might be put into a
|
||||
* low-power state if all of the necessary conditions are satisfied. Check
|
||||
* these conditions and handle the device as appropriate, possibly queueing
|
||||
* a suspend request for it. The return value is ignored by the PM core.
|
||||
*
|
||||
* Refer to Documentation/power/runtime_pm.txt for more information about the
|
||||
* role of the above callbacks in device runtime power management.
|
||||
*
|
||||
*/
|
||||
|
||||
struct dev_pm_ops {
|
||||
|
||||
@@ -35,10 +35,12 @@ struct pstore_info {
|
||||
spinlock_t buf_lock; /* serialize access to 'buf' */
|
||||
char *buf;
|
||||
size_t bufsize;
|
||||
struct mutex read_mutex; /* serialize open/read/close */
|
||||
int (*open)(struct pstore_info *psi);
|
||||
int (*close)(struct pstore_info *psi);
|
||||
ssize_t (*read)(u64 *id, enum pstore_type_id *type,
|
||||
struct timespec *time, struct pstore_info *psi);
|
||||
struct timespec *time, char **buf,
|
||||
struct pstore_info *psi);
|
||||
int (*write)(enum pstore_type_id type, u64 *id,
|
||||
unsigned int part, size_t size, struct pstore_info *psi);
|
||||
int (*erase)(enum pstore_type_id type, u64 id,
|
||||
|
||||
@@ -1521,7 +1521,6 @@ struct task_struct {
|
||||
#ifdef CONFIG_FAULT_INJECTION
|
||||
int make_it_fail;
|
||||
#endif
|
||||
struct prop_local_single dirties;
|
||||
/*
|
||||
* when (nr_dirtied >= nr_dirtied_pause), it's time to call
|
||||
* balance_dirty_pages() for some dirty throttling pause
|
||||
|
||||
@@ -207,13 +207,15 @@ struct serial_icounter_struct {
|
||||
|
||||
struct serial_rs485 {
|
||||
__u32 flags; /* RS485 feature flags */
|
||||
#define SER_RS485_ENABLED (1 << 0)
|
||||
#define SER_RS485_RTS_ON_SEND (1 << 1)
|
||||
#define SER_RS485_RTS_AFTER_SEND (1 << 2)
|
||||
#define SER_RS485_RTS_BEFORE_SEND (1 << 3)
|
||||
#define SER_RS485_ENABLED (1 << 0) /* If enabled */
|
||||
#define SER_RS485_RTS_ON_SEND (1 << 1) /* Logical level for
|
||||
RTS pin when
|
||||
sending */
|
||||
#define SER_RS485_RTS_AFTER_SEND (1 << 2) /* Logical level for
|
||||
RTS pin after sent*/
|
||||
#define SER_RS485_RX_DURING_TX (1 << 4)
|
||||
__u32 delay_rts_before_send; /* Milliseconds */
|
||||
__u32 delay_rts_after_send; /* Milliseconds */
|
||||
__u32 delay_rts_before_send; /* Delay before send (milliseconds) */
|
||||
__u32 delay_rts_after_send; /* Delay after send (milliseconds) */
|
||||
__u32 padding[5]; /* Memory is cheap, new structs
|
||||
are a royal PITA .. */
|
||||
};
|
||||
|
||||
@@ -85,6 +85,8 @@
|
||||
* @reset: reset the device
|
||||
* vdev: the virtio device
|
||||
* After this, status and feature negotiation must be done again
|
||||
* Device must not be reset from its vq/config callbacks, or in
|
||||
* parallel with being added/removed.
|
||||
* @find_vqs: find virtqueues and instantiate them.
|
||||
* vdev: the virtio_device
|
||||
* nvqs: the number of virtqueues to find
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
#define VIRTIO_MMIO_GUEST_FEATURES 0x020
|
||||
|
||||
/* Activated features set selector - Write Only */
|
||||
#define VIRTIO_MMIO_GUEST_FEATURES_SET 0x024
|
||||
#define VIRTIO_MMIO_GUEST_FEATURES_SEL 0x024
|
||||
|
||||
/* Guest's memory page size in bytes - Write Only */
|
||||
#define VIRTIO_MMIO_GUEST_PAGE_SIZE 0x028
|
||||
|
||||
@@ -35,6 +35,7 @@ struct inet_peer {
|
||||
|
||||
u32 metrics[RTAX_MAX];
|
||||
u32 rate_tokens; /* rate limiting for ICMP */
|
||||
int redirect_genid;
|
||||
unsigned long rate_last;
|
||||
unsigned long pmtu_expires;
|
||||
u32 pmtu_orig;
|
||||
|
||||
@@ -67,18 +67,18 @@ struct nf_ct_event_notifier {
|
||||
int (*fcn)(unsigned int events, struct nf_ct_event *item);
|
||||
};
|
||||
|
||||
extern struct nf_ct_event_notifier __rcu *nf_conntrack_event_cb;
|
||||
extern int nf_conntrack_register_notifier(struct nf_ct_event_notifier *nb);
|
||||
extern void nf_conntrack_unregister_notifier(struct nf_ct_event_notifier *nb);
|
||||
extern int nf_conntrack_register_notifier(struct net *net, struct nf_ct_event_notifier *nb);
|
||||
extern void nf_conntrack_unregister_notifier(struct net *net, struct nf_ct_event_notifier *nb);
|
||||
|
||||
extern void nf_ct_deliver_cached_events(struct nf_conn *ct);
|
||||
|
||||
static inline void
|
||||
nf_conntrack_event_cache(enum ip_conntrack_events event, struct nf_conn *ct)
|
||||
{
|
||||
struct net *net = nf_ct_net(ct);
|
||||
struct nf_conntrack_ecache *e;
|
||||
|
||||
if (nf_conntrack_event_cb == NULL)
|
||||
if (net->ct.nf_conntrack_event_cb == NULL)
|
||||
return;
|
||||
|
||||
e = nf_ct_ecache_find(ct);
|
||||
@@ -95,11 +95,12 @@ nf_conntrack_eventmask_report(unsigned int eventmask,
|
||||
int report)
|
||||
{
|
||||
int ret = 0;
|
||||
struct net *net = nf_ct_net(ct);
|
||||
struct nf_ct_event_notifier *notify;
|
||||
struct nf_conntrack_ecache *e;
|
||||
|
||||
rcu_read_lock();
|
||||
notify = rcu_dereference(nf_conntrack_event_cb);
|
||||
notify = rcu_dereference(net->ct.nf_conntrack_event_cb);
|
||||
if (notify == NULL)
|
||||
goto out_unlock;
|
||||
|
||||
@@ -164,9 +165,8 @@ struct nf_exp_event_notifier {
|
||||
int (*fcn)(unsigned int events, struct nf_exp_event *item);
|
||||
};
|
||||
|
||||
extern struct nf_exp_event_notifier __rcu *nf_expect_event_cb;
|
||||
extern int nf_ct_expect_register_notifier(struct nf_exp_event_notifier *nb);
|
||||
extern void nf_ct_expect_unregister_notifier(struct nf_exp_event_notifier *nb);
|
||||
extern int nf_ct_expect_register_notifier(struct net *net, struct nf_exp_event_notifier *nb);
|
||||
extern void nf_ct_expect_unregister_notifier(struct net *net, struct nf_exp_event_notifier *nb);
|
||||
|
||||
static inline void
|
||||
nf_ct_expect_event_report(enum ip_conntrack_expect_events event,
|
||||
@@ -174,11 +174,12 @@ nf_ct_expect_event_report(enum ip_conntrack_expect_events event,
|
||||
u32 pid,
|
||||
int report)
|
||||
{
|
||||
struct net *net = nf_ct_exp_net(exp);
|
||||
struct nf_exp_event_notifier *notify;
|
||||
struct nf_conntrack_ecache *e;
|
||||
|
||||
rcu_read_lock();
|
||||
notify = rcu_dereference(nf_expect_event_cb);
|
||||
notify = rcu_dereference(net->ct.nf_expect_event_cb);
|
||||
if (notify == NULL)
|
||||
goto out_unlock;
|
||||
|
||||
|
||||
@@ -18,6 +18,8 @@ struct netns_ct {
|
||||
struct hlist_nulls_head unconfirmed;
|
||||
struct hlist_nulls_head dying;
|
||||
struct ip_conntrack_stat __percpu *stat;
|
||||
struct nf_ct_event_notifier __rcu *nf_conntrack_event_cb;
|
||||
struct nf_exp_event_notifier __rcu *nf_expect_event_cb;
|
||||
int sysctl_events;
|
||||
unsigned int sysctl_events_retry_timeout;
|
||||
int sysctl_acct;
|
||||
|
||||
@@ -116,7 +116,7 @@ struct red_parms {
|
||||
u32 qR; /* Cached random number */
|
||||
|
||||
unsigned long qavg; /* Average queue length: A scaled */
|
||||
psched_time_t qidlestart; /* Start of current idle period */
|
||||
ktime_t qidlestart; /* Start of current idle period */
|
||||
};
|
||||
|
||||
static inline u32 red_rmask(u8 Plog)
|
||||
@@ -148,17 +148,17 @@ static inline void red_set_parms(struct red_parms *p,
|
||||
|
||||
static inline int red_is_idling(struct red_parms *p)
|
||||
{
|
||||
return p->qidlestart != PSCHED_PASTPERFECT;
|
||||
return p->qidlestart.tv64 != 0;
|
||||
}
|
||||
|
||||
static inline void red_start_of_idle_period(struct red_parms *p)
|
||||
{
|
||||
p->qidlestart = psched_get_time();
|
||||
p->qidlestart = ktime_get();
|
||||
}
|
||||
|
||||
static inline void red_end_of_idle_period(struct red_parms *p)
|
||||
{
|
||||
p->qidlestart = PSCHED_PASTPERFECT;
|
||||
p->qidlestart.tv64 = 0;
|
||||
}
|
||||
|
||||
static inline void red_restart(struct red_parms *p)
|
||||
@@ -170,13 +170,10 @@ static inline void red_restart(struct red_parms *p)
|
||||
|
||||
static inline unsigned long red_calc_qavg_from_idle_time(struct red_parms *p)
|
||||
{
|
||||
psched_time_t now;
|
||||
long us_idle;
|
||||
s64 delta = ktime_us_delta(ktime_get(), p->qidlestart);
|
||||
long us_idle = min_t(s64, delta, p->Scell_max);
|
||||
int shift;
|
||||
|
||||
now = psched_get_time();
|
||||
us_idle = psched_tdiff_bounded(now, p->qidlestart, p->Scell_max);
|
||||
|
||||
/*
|
||||
* The problem: ideally, average length queue recalcultion should
|
||||
* be done over constant clock intervals. This is too expensive, so
|
||||
|
||||
@@ -307,15 +307,8 @@ struct omap_dss_board_info {
|
||||
void (*dsi_disable_pads)(int dsi_id, unsigned lane_mask);
|
||||
};
|
||||
|
||||
#if defined(CONFIG_OMAP2_DSS_MODULE) || defined(CONFIG_OMAP2_DSS)
|
||||
/* Init with the board info */
|
||||
extern int omap_display_init(struct omap_dss_board_info *board_data);
|
||||
#else
|
||||
static inline int omap_display_init(struct omap_dss_board_info *board_data)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
struct omap_display_platform_data {
|
||||
struct omap_dss_board_info *board_data;
|
||||
|
||||
Reference in New Issue
Block a user