diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-22 13:55:06 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-22 13:55:06 -0400 |
| commit | b9bb6fb73b3e112d241a5edd146740be9a0c3cc0 (patch) | |
| tree | d65072d0371468d685b7464dc6b38f920c0c9666 /include/uapi/linux | |
| parent | 15ce2658ddbd3db20dfba3622f3d224f01837fdc (diff) | |
| parent | 9abbfb486f5c254805bb6a3f263bc14d989eb90b (diff) | |
Merge tag 'virtio-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux
Pull virtio updates from Rusty Russell:
"Some virtio internal cleanups, a new virtio device "virtio input", and
a change to allow the legacy virtio balloon.
Most excitingly, some lguest work! No seriously, I got some cleanup
patches"
* tag 'virtio-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
virtio: drop virtio_device_is_legacy_only
virtio_pci: support non-legacy balloon devices
virtio_mmio: support non-legacy balloon devices
virtio_ccw: support non-legacy balloon devices
virtio: balloon might not be a legacy device
virtio_balloon: transitional interface
virtio_ring: Update weak barriers to use dma_wmb/rmb
virtio_pci_modern: switch to type-safe io accessors
virtio_pci_modern: type-safe io accessors
lguest: handle traps on the "interrupt suppressed" iret instruction.
virtio: drop a useless config read
virtio_config: reorder functions
Add virtio-input driver.
lguest: suppress interrupts for single insn, not range.
lguest: simplify lguest_iret
lguest: rename i386_head.S in the comments
lguest: explicitly set miscdevice's private_data NULL
lguest: fix pending interrupt test.
Diffstat (limited to 'include/uapi/linux')
| -rw-r--r-- | include/uapi/linux/Kbuild | 1 | ||||
| -rw-r--r-- | include/uapi/linux/virtio_balloon.h | 32 | ||||
| -rw-r--r-- | include/uapi/linux/virtio_ids.h | 1 | ||||
| -rw-r--r-- | include/uapi/linux/virtio_input.h | 76 |
4 files changed, 106 insertions, 4 deletions
diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild index 640954b9ecf9..1a0006a76b00 100644 --- a/include/uapi/linux/Kbuild +++ b/include/uapi/linux/Kbuild | |||
| @@ -431,6 +431,7 @@ header-y += virtio_blk.h | |||
| 431 | header-y += virtio_config.h | 431 | header-y += virtio_config.h |
| 432 | header-y += virtio_console.h | 432 | header-y += virtio_console.h |
| 433 | header-y += virtio_ids.h | 433 | header-y += virtio_ids.h |
| 434 | header-y += virtio_input.h | ||
| 434 | header-y += virtio_net.h | 435 | header-y += virtio_net.h |
| 435 | header-y += virtio_pci.h | 436 | header-y += virtio_pci.h |
| 436 | header-y += virtio_ring.h | 437 | header-y += virtio_ring.h |
diff --git a/include/uapi/linux/virtio_balloon.h b/include/uapi/linux/virtio_balloon.h index 4b0488f20b2e..984169a819ee 100644 --- a/include/uapi/linux/virtio_balloon.h +++ b/include/uapi/linux/virtio_balloon.h | |||
| @@ -25,6 +25,7 @@ | |||
| 25 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | 25 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| 26 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 26 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| 27 | * SUCH DAMAGE. */ | 27 | * SUCH DAMAGE. */ |
| 28 | #include <linux/types.h> | ||
| 28 | #include <linux/virtio_ids.h> | 29 | #include <linux/virtio_ids.h> |
| 29 | #include <linux/virtio_config.h> | 30 | #include <linux/virtio_config.h> |
| 30 | 31 | ||
| @@ -38,9 +39,9 @@ | |||
| 38 | 39 | ||
| 39 | struct virtio_balloon_config { | 40 | struct virtio_balloon_config { |
| 40 | /* Number of pages host wants Guest to give up. */ | 41 | /* Number of pages host wants Guest to give up. */ |
| 41 | __le32 num_pages; | 42 | __u32 num_pages; |
| 42 | /* Number of pages we've actually got in balloon. */ | 43 | /* Number of pages we've actually got in balloon. */ |
| 43 | __le32 actual; | 44 | __u32 actual; |
| 44 | }; | 45 | }; |
| 45 | 46 | ||
| 46 | #define VIRTIO_BALLOON_S_SWAP_IN 0 /* Amount of memory swapped in */ | 47 | #define VIRTIO_BALLOON_S_SWAP_IN 0 /* Amount of memory swapped in */ |
| @@ -51,9 +52,32 @@ struct virtio_balloon_config { | |||
| 51 | #define VIRTIO_BALLOON_S_MEMTOT 5 /* Total amount of memory */ | 52 | #define VIRTIO_BALLOON_S_MEMTOT 5 /* Total amount of memory */ |
| 52 | #define VIRTIO_BALLOON_S_NR 6 | 53 | #define VIRTIO_BALLOON_S_NR 6 |
| 53 | 54 | ||
| 55 | /* | ||
| 56 | * Memory statistics structure. | ||
| 57 | * Driver fills an array of these structures and passes to device. | ||
| 58 | * | ||
| 59 | * NOTE: fields are laid out in a way that would make compiler add padding | ||
| 60 | * between and after fields, so we have to use compiler-specific attributes to | ||
| 61 | * pack it, to disable this padding. This also often causes compiler to | ||
| 62 | * generate suboptimal code. | ||
| 63 | * | ||
| 64 | * We maintain this statistics structure format for backwards compatibility, | ||
| 65 | * but don't follow this example. | ||
| 66 | * | ||
| 67 | * If implementing a similar structure, do something like the below instead: | ||
| 68 | * struct virtio_balloon_stat { | ||
| 69 | * __virtio16 tag; | ||
| 70 | * __u8 reserved[6]; | ||
| 71 | * __virtio64 val; | ||
| 72 | * }; | ||
| 73 | * | ||
| 74 | * In other words, add explicit reserved fields to align field and | ||
| 75 | * structure boundaries at field size, avoiding compiler padding | ||
| 76 | * without the packed attribute. | ||
| 77 | */ | ||
| 54 | struct virtio_balloon_stat { | 78 | struct virtio_balloon_stat { |
| 55 | __u16 tag; | 79 | __virtio16 tag; |
| 56 | __u64 val; | 80 | __virtio64 val; |
| 57 | } __attribute__((packed)); | 81 | } __attribute__((packed)); |
| 58 | 82 | ||
| 59 | #endif /* _LINUX_VIRTIO_BALLOON_H */ | 83 | #endif /* _LINUX_VIRTIO_BALLOON_H */ |
diff --git a/include/uapi/linux/virtio_ids.h b/include/uapi/linux/virtio_ids.h index 284fc3a05f7b..5f60aa4be50a 100644 --- a/include/uapi/linux/virtio_ids.h +++ b/include/uapi/linux/virtio_ids.h | |||
| @@ -39,5 +39,6 @@ | |||
| 39 | #define VIRTIO_ID_9P 9 /* 9p virtio console */ | 39 | #define VIRTIO_ID_9P 9 /* 9p virtio console */ |
| 40 | #define VIRTIO_ID_RPROC_SERIAL 11 /* virtio remoteproc serial link */ | 40 | #define VIRTIO_ID_RPROC_SERIAL 11 /* virtio remoteproc serial link */ |
| 41 | #define VIRTIO_ID_CAIF 12 /* Virtio caif */ | 41 | #define VIRTIO_ID_CAIF 12 /* Virtio caif */ |
| 42 | #define VIRTIO_ID_INPUT 18 /* virtio input */ | ||
| 42 | 43 | ||
| 43 | #endif /* _LINUX_VIRTIO_IDS_H */ | 44 | #endif /* _LINUX_VIRTIO_IDS_H */ |
diff --git a/include/uapi/linux/virtio_input.h b/include/uapi/linux/virtio_input.h new file mode 100644 index 000000000000..a7fe5c8fb135 --- /dev/null +++ b/include/uapi/linux/virtio_input.h | |||
| @@ -0,0 +1,76 @@ | |||
| 1 | #ifndef _LINUX_VIRTIO_INPUT_H | ||
| 2 | #define _LINUX_VIRTIO_INPUT_H | ||
| 3 | /* This header is BSD licensed so anyone can use the definitions to implement | ||
| 4 | * compatible drivers/servers. | ||
| 5 | * | ||
| 6 | * Redistribution and use in source and binary forms, with or without | ||
| 7 | * modification, are permitted provided that the following conditions | ||
| 8 | * are met: | ||
| 9 | * 1. Redistributions of source code must retain the above copyright | ||
| 10 | * notice, this list of conditions and the following disclaimer. | ||
| 11 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 12 | * notice, this list of conditions and the following disclaimer in the | ||
| 13 | * documentation and/or other materials provided with the distribution. | ||
| 14 | * 3. Neither the name of IBM nor the names of its contributors | ||
| 15 | * may be used to endorse or promote products derived from this software | ||
| 16 | * without specific prior written permission. | ||
| 17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
| 18 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
| 19 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | ||
| 20 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IBM OR | ||
| 21 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
| 22 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
| 23 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
| 24 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
| 25 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||
| 26 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | ||
| 27 | * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
| 28 | * SUCH DAMAGE. */ | ||
| 29 | |||
| 30 | #include <linux/types.h> | ||
| 31 | |||
| 32 | enum virtio_input_config_select { | ||
| 33 | VIRTIO_INPUT_CFG_UNSET = 0x00, | ||
| 34 | VIRTIO_INPUT_CFG_ID_NAME = 0x01, | ||
| 35 | VIRTIO_INPUT_CFG_ID_SERIAL = 0x02, | ||
| 36 | VIRTIO_INPUT_CFG_ID_DEVIDS = 0x03, | ||
| 37 | VIRTIO_INPUT_CFG_PROP_BITS = 0x10, | ||
| 38 | VIRTIO_INPUT_CFG_EV_BITS = 0x11, | ||
| 39 | VIRTIO_INPUT_CFG_ABS_INFO = 0x12, | ||
| 40 | }; | ||
| 41 | |||
| 42 | struct virtio_input_absinfo { | ||
| 43 | __u32 min; | ||
| 44 | __u32 max; | ||
| 45 | __u32 fuzz; | ||
| 46 | __u32 flat; | ||
| 47 | __u32 res; | ||
| 48 | }; | ||
| 49 | |||
| 50 | struct virtio_input_devids { | ||
| 51 | __u16 bustype; | ||
| 52 | __u16 vendor; | ||
| 53 | __u16 product; | ||
| 54 | __u16 version; | ||
| 55 | }; | ||
| 56 | |||
| 57 | struct virtio_input_config { | ||
| 58 | __u8 select; | ||
| 59 | __u8 subsel; | ||
| 60 | __u8 size; | ||
| 61 | __u8 reserved[5]; | ||
| 62 | union { | ||
| 63 | char string[128]; | ||
| 64 | __u8 bitmap[128]; | ||
| 65 | struct virtio_input_absinfo abs; | ||
| 66 | struct virtio_input_devids ids; | ||
| 67 | } u; | ||
| 68 | }; | ||
| 69 | |||
| 70 | struct virtio_input_event { | ||
| 71 | __le16 type; | ||
| 72 | __le16 code; | ||
| 73 | __le32 value; | ||
| 74 | }; | ||
| 75 | |||
| 76 | #endif /* _LINUX_VIRTIO_INPUT_H */ | ||
