diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-25 10:22:59 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-25 10:22:59 -0500 |
commit | 10df38cafc87ef38870154d1b9b1ea2435e69287 (patch) | |
tree | 77771ad9ddf3d1dd42478ee97dfac26c5e8f55eb /include | |
parent | dbd004291ed31db280a3f2d7a1113a04e5e85af4 (diff) | |
parent | c610028611479e6b9d8b2f1a6628e9417ef4114f (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus
* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus: (44 commits)
Add MAINTAINERS entry for virtio_console
virtio: console: Fill ports' entire in_vq with buffers
virtio: console: Error out if we can't allocate buffers for control queue
virtio: console: Add ability to remove module
virtio: console: Ensure no memleaks in case of unused buffers
virtio: console: show error message if hvc_alloc fails for console ports
virtio: console: Add debugfs files for each port to expose debug info
virtio: console: Add ability to hot-unplug ports
virtio: console: Handle port hot-plug
virtio: console: Remove cached data on port close
virtio: console: Register with sysfs and create a 'name' attribute for ports
virtio: console: Ensure only one process can have a port open at a time
virtio: console: Add file operations to ports for open/read/write/poll
virtio: console: Associate each port with a char device
virtio: console: Prepare for writing to userspace buffers
virtio: console: Add a new MULTIPORT feature, support for generic ports
virtio: console: Introduce a send_buf function for a common path for sending data to host
virtio: console: Introduce function to hand off data from host to readers
virtio: console: Separate out find_vqs operation into a different function
virtio: console: Separate out console init into a new function
...
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/virtio.h | 4 | ||||
-rw-r--r-- | include/linux/virtio_balloon.h | 15 | ||||
-rw-r--r-- | include/linux/virtio_blk.h | 13 | ||||
-rw-r--r-- | include/linux/virtio_console.h | 30 |
4 files changed, 60 insertions, 2 deletions
diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 057a2e010758..f508c651e53d 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h | |||
@@ -51,6 +51,9 @@ struct virtqueue { | |||
51 | * This re-enables callbacks; it returns "false" if there are pending | 51 | * This re-enables callbacks; it returns "false" if there are pending |
52 | * buffers in the queue, to detect a possible race between the driver | 52 | * buffers in the queue, to detect a possible race between the driver |
53 | * checking for more work, and enabling callbacks. | 53 | * checking for more work, and enabling callbacks. |
54 | * @detach_unused_buf: detach first unused buffer | ||
55 | * vq: the struct virtqueue we're talking about. | ||
56 | * Returns NULL or the "data" token handed to add_buf | ||
54 | * | 57 | * |
55 | * Locking rules are straightforward: the driver is responsible for | 58 | * Locking rules are straightforward: the driver is responsible for |
56 | * locking. No two operations may be invoked simultaneously, with the exception | 59 | * locking. No two operations may be invoked simultaneously, with the exception |
@@ -71,6 +74,7 @@ struct virtqueue_ops { | |||
71 | 74 | ||
72 | void (*disable_cb)(struct virtqueue *vq); | 75 | void (*disable_cb)(struct virtqueue *vq); |
73 | bool (*enable_cb)(struct virtqueue *vq); | 76 | bool (*enable_cb)(struct virtqueue *vq); |
77 | void *(*detach_unused_buf)(struct virtqueue *vq); | ||
74 | }; | 78 | }; |
75 | 79 | ||
76 | /** | 80 | /** |
diff --git a/include/linux/virtio_balloon.h b/include/linux/virtio_balloon.h index 1418f048cb34..a50ecd1b81a2 100644 --- a/include/linux/virtio_balloon.h +++ b/include/linux/virtio_balloon.h | |||
@@ -7,6 +7,7 @@ | |||
7 | 7 | ||
8 | /* The feature bitmap for virtio balloon */ | 8 | /* The feature bitmap for virtio balloon */ |
9 | #define VIRTIO_BALLOON_F_MUST_TELL_HOST 0 /* Tell before reclaiming pages */ | 9 | #define VIRTIO_BALLOON_F_MUST_TELL_HOST 0 /* Tell before reclaiming pages */ |
10 | #define VIRTIO_BALLOON_F_STATS_VQ 1 /* Memory Stats virtqueue */ | ||
10 | 11 | ||
11 | /* Size of a PFN in the balloon interface. */ | 12 | /* Size of a PFN in the balloon interface. */ |
12 | #define VIRTIO_BALLOON_PFN_SHIFT 12 | 13 | #define VIRTIO_BALLOON_PFN_SHIFT 12 |
@@ -18,4 +19,18 @@ struct virtio_balloon_config | |||
18 | /* Number of pages we've actually got in balloon. */ | 19 | /* Number of pages we've actually got in balloon. */ |
19 | __le32 actual; | 20 | __le32 actual; |
20 | }; | 21 | }; |
22 | |||
23 | #define VIRTIO_BALLOON_S_SWAP_IN 0 /* Amount of memory swapped in */ | ||
24 | #define VIRTIO_BALLOON_S_SWAP_OUT 1 /* Amount of memory swapped out */ | ||
25 | #define VIRTIO_BALLOON_S_MAJFLT 2 /* Number of major faults */ | ||
26 | #define VIRTIO_BALLOON_S_MINFLT 3 /* Number of minor faults */ | ||
27 | #define VIRTIO_BALLOON_S_MEMFREE 4 /* Total amount of free memory */ | ||
28 | #define VIRTIO_BALLOON_S_MEMTOT 5 /* Total amount of memory */ | ||
29 | #define VIRTIO_BALLOON_S_NR 6 | ||
30 | |||
31 | struct virtio_balloon_stat { | ||
32 | u16 tag; | ||
33 | u64 val; | ||
34 | } __attribute__((packed)); | ||
35 | |||
21 | #endif /* _LINUX_VIRTIO_BALLOON_H */ | 36 | #endif /* _LINUX_VIRTIO_BALLOON_H */ |
diff --git a/include/linux/virtio_blk.h b/include/linux/virtio_blk.h index fd294c56d571..e52029e98919 100644 --- a/include/linux/virtio_blk.h +++ b/include/linux/virtio_blk.h | |||
@@ -15,6 +15,7 @@ | |||
15 | #define VIRTIO_BLK_F_BLK_SIZE 6 /* Block size of disk is available*/ | 15 | #define VIRTIO_BLK_F_BLK_SIZE 6 /* Block size of disk is available*/ |
16 | #define VIRTIO_BLK_F_SCSI 7 /* Supports scsi command passthru */ | 16 | #define VIRTIO_BLK_F_SCSI 7 /* Supports scsi command passthru */ |
17 | #define VIRTIO_BLK_F_FLUSH 9 /* Cache flush command support */ | 17 | #define VIRTIO_BLK_F_FLUSH 9 /* Cache flush command support */ |
18 | #define VIRTIO_BLK_F_TOPOLOGY 10 /* Topology information is available */ | ||
18 | 19 | ||
19 | struct virtio_blk_config { | 20 | struct virtio_blk_config { |
20 | /* The capacity (in 512-byte sectors). */ | 21 | /* The capacity (in 512-byte sectors). */ |
@@ -29,8 +30,20 @@ struct virtio_blk_config { | |||
29 | __u8 heads; | 30 | __u8 heads; |
30 | __u8 sectors; | 31 | __u8 sectors; |
31 | } geometry; | 32 | } geometry; |
33 | |||
32 | /* block size of device (if VIRTIO_BLK_F_BLK_SIZE) */ | 34 | /* block size of device (if VIRTIO_BLK_F_BLK_SIZE) */ |
33 | __u32 blk_size; | 35 | __u32 blk_size; |
36 | |||
37 | /* the next 4 entries are guarded by VIRTIO_BLK_F_TOPOLOGY */ | ||
38 | /* exponent for physical block per logical block. */ | ||
39 | __u8 physical_block_exp; | ||
40 | /* alignment offset in logical blocks. */ | ||
41 | __u8 alignment_offset; | ||
42 | /* minimum I/O size without performance penalty in logical blocks. */ | ||
43 | __u16 min_io_size; | ||
44 | /* optimal sustained I/O size in logical blocks. */ | ||
45 | __u32 opt_io_size; | ||
46 | |||
34 | } __attribute__((packed)); | 47 | } __attribute__((packed)); |
35 | 48 | ||
36 | /* | 49 | /* |
diff --git a/include/linux/virtio_console.h b/include/linux/virtio_console.h index fe885174cc1f..ae4f039515b4 100644 --- a/include/linux/virtio_console.h +++ b/include/linux/virtio_console.h | |||
@@ -3,19 +3,45 @@ | |||
3 | #include <linux/types.h> | 3 | #include <linux/types.h> |
4 | #include <linux/virtio_ids.h> | 4 | #include <linux/virtio_ids.h> |
5 | #include <linux/virtio_config.h> | 5 | #include <linux/virtio_config.h> |
6 | /* This header, excluding the #ifdef __KERNEL__ part, is BSD licensed so | 6 | /* |
7 | * anyone can use the definitions to implement compatible drivers/servers. */ | 7 | * This header, excluding the #ifdef __KERNEL__ part, is BSD licensed so |
8 | * anyone can use the definitions to implement compatible drivers/servers. | ||
9 | * | ||
10 | * Copyright (C) Red Hat, Inc., 2009, 2010 | ||
11 | */ | ||
8 | 12 | ||
9 | /* Feature bits */ | 13 | /* Feature bits */ |
10 | #define VIRTIO_CONSOLE_F_SIZE 0 /* Does host provide console size? */ | 14 | #define VIRTIO_CONSOLE_F_SIZE 0 /* Does host provide console size? */ |
15 | #define VIRTIO_CONSOLE_F_MULTIPORT 1 /* Does host provide multiple ports? */ | ||
11 | 16 | ||
12 | struct virtio_console_config { | 17 | struct virtio_console_config { |
13 | /* colums of the screens */ | 18 | /* colums of the screens */ |
14 | __u16 cols; | 19 | __u16 cols; |
15 | /* rows of the screens */ | 20 | /* rows of the screens */ |
16 | __u16 rows; | 21 | __u16 rows; |
22 | /* max. number of ports this device can hold */ | ||
23 | __u32 max_nr_ports; | ||
24 | /* number of ports added so far */ | ||
25 | __u32 nr_ports; | ||
17 | } __attribute__((packed)); | 26 | } __attribute__((packed)); |
18 | 27 | ||
28 | /* | ||
29 | * A message that's passed between the Host and the Guest for a | ||
30 | * particular port. | ||
31 | */ | ||
32 | struct virtio_console_control { | ||
33 | __u32 id; /* Port number */ | ||
34 | __u16 event; /* The kind of control event (see below) */ | ||
35 | __u16 value; /* Extra information for the key */ | ||
36 | }; | ||
37 | |||
38 | /* Some events for control messages */ | ||
39 | #define VIRTIO_CONSOLE_PORT_READY 0 | ||
40 | #define VIRTIO_CONSOLE_CONSOLE_PORT 1 | ||
41 | #define VIRTIO_CONSOLE_RESIZE 2 | ||
42 | #define VIRTIO_CONSOLE_PORT_OPEN 3 | ||
43 | #define VIRTIO_CONSOLE_PORT_NAME 4 | ||
44 | #define VIRTIO_CONSOLE_PORT_REMOVE 5 | ||
19 | 45 | ||
20 | #ifdef __KERNEL__ | 46 | #ifdef __KERNEL__ |
21 | int __init virtio_cons_early_init(int (*put_chars)(u32, const char *, int)); | 47 | int __init virtio_cons_early_init(int (*put_chars)(u32, const char *, int)); |