History

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.

Linus Torvalds committed 11 years ago

Commit b9bb6fb2 parents 15ce265 9abbfb424 files · +721 −167Browse files

Showing the changes to include/uapi/linux (4 of 24 files). Show all

Unified · Split

4 files
  1. include/uapi/linux/Kbuild +1 −0
  2. include/uapi/linux/virtio_balloon.h +28 −4
  3. include/uapi/linux/virtio_ids.h +1 −0
  4. include/uapi/linux/virtio_input.h +76 −0
include/uapi/linux/Kbuild+1−0
@@ -431,6 +431,7 @@ header-y += virtio_blk.h · 430 unmodified lines
431431 header-y += virtio_config.h
432432 header-y += virtio_console.h
433433 header-y += virtio_ids.h
434+header-y += virtio_input.h
434435 header-y += virtio_net.h
435436 header-y += virtio_pci.h
436437 header-y += virtio_ring.h
include/uapi/linux/virtio_balloon.h+28−4
@@ -25,6 +25,7 @@ · 24 unmodified lines
2525 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2626 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2727 * SUCH DAMAGE. */
28+#include <linux/types.h>
2829 #include <linux/virtio_ids.h>
2930 #include <linux/virtio_config.h>
3031
@@ -38,9 +39,9 @@ · 7 unmodified lines
3839
3940 struct virtio_balloon_config {
4041 /* Number of pages host wants Guest to give up. */
41− __le32 num_pages;
42+ __u32 num_pages;
4243 /* Number of pages we've actually got in balloon. */
43− __le32 actual;
44+ __u32 actual;
4445 };
4546
4647 #define VIRTIO_BALLOON_S_SWAP_IN 0 /* Amount of memory swapped in */
@@ -51,9 +52,32 @@ struct virtio_balloon_config { · 4 unmodified lines
5152 #define VIRTIO_BALLOON_S_MEMTOT 5 /* Total amount of memory */
5253 #define VIRTIO_BALLOON_S_NR 6
5354
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+ */
5478 struct virtio_balloon_stat {
55− __u16 tag;
56− __u64 val;
79+ __virtio16 tag;
80+ __virtio64 val;
5781 } __attribute__((packed));
5882
5983 #endif /* _LINUX_VIRTIO_BALLOON_H */
include/uapi/linux/virtio_ids.h+1−0
@@ -39,5 +39,6 @@ · 38 unmodified lines
3939 #define VIRTIO_ID_9P 9 /* 9p virtio console */
4040 #define VIRTIO_ID_RPROC_SERIAL 11 /* virtio remoteproc serial link */
4141 #define VIRTIO_ID_CAIF 12 /* Virtio caif */
42+#define VIRTIO_ID_INPUT 18 /* virtio input */
4243
4344 #endif /* _LINUX_VIRTIO_IDS_H */
include/uapi/linux/virtio_input.h+76−0
@@ -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 */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t