diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2016-09-01 12:33:46 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2016-09-01 12:33:46 -0400 |
commit | 0cb7bf61b1e9f05027de58c80f9b46a714d24e35 (patch) | |
tree | 41fb55cf62d07b425122f9a8b96412c0d8eb99c5 /tools/virtio/linux | |
parent | aa877175e7a9982233ed8f10cb4bfddd78d82741 (diff) | |
parent | 3eab887a55424fc2c27553b7bfe32330df83f7b8 (diff) |
Merge branch 'linus' into smp/hotplug
Apply upstream changes to avoid conflicts with pending patches.
Diffstat (limited to 'tools/virtio/linux')
-rw-r--r-- | tools/virtio/linux/dma-mapping.h | 16 | ||||
-rw-r--r-- | tools/virtio/linux/kernel.h | 14 | ||||
-rw-r--r-- | tools/virtio/linux/slab.h | 4 | ||||
-rw-r--r-- | tools/virtio/linux/virtio.h | 6 | ||||
-rw-r--r-- | tools/virtio/linux/virtio_config.h | 13 |
5 files changed, 52 insertions, 1 deletions
diff --git a/tools/virtio/linux/dma-mapping.h b/tools/virtio/linux/dma-mapping.h index 4f93af89ae16..18601f6689b9 100644 --- a/tools/virtio/linux/dma-mapping.h +++ b/tools/virtio/linux/dma-mapping.h | |||
@@ -14,4 +14,20 @@ enum dma_data_direction { | |||
14 | DMA_NONE = 3, | 14 | DMA_NONE = 3, |
15 | }; | 15 | }; |
16 | 16 | ||
17 | #define dma_alloc_coherent(d, s, hp, f) ({ \ | ||
18 | void *__dma_alloc_coherent_p = kmalloc((s), (f)); \ | ||
19 | *(hp) = (unsigned long)__dma_alloc_coherent_p; \ | ||
20 | __dma_alloc_coherent_p; \ | ||
21 | }) | ||
22 | |||
23 | #define dma_free_coherent(d, s, p, h) kfree(p) | ||
24 | |||
25 | #define dma_map_page(d, p, o, s, dir) (page_to_phys(p) + (o)) | ||
26 | |||
27 | #define dma_map_single(d, p, s, dir) (virt_to_phys(p)) | ||
28 | #define dma_mapping_error(...) (0) | ||
29 | |||
30 | #define dma_unmap_single(...) do { } while (0) | ||
31 | #define dma_unmap_page(...) do { } while (0) | ||
32 | |||
17 | #endif | 33 | #endif |
diff --git a/tools/virtio/linux/kernel.h b/tools/virtio/linux/kernel.h index 033849948215..d9554fc3f340 100644 --- a/tools/virtio/linux/kernel.h +++ b/tools/virtio/linux/kernel.h | |||
@@ -20,7 +20,9 @@ | |||
20 | 20 | ||
21 | #define PAGE_SIZE getpagesize() | 21 | #define PAGE_SIZE getpagesize() |
22 | #define PAGE_MASK (~(PAGE_SIZE-1)) | 22 | #define PAGE_MASK (~(PAGE_SIZE-1)) |
23 | #define PAGE_ALIGN(x) ((x + PAGE_SIZE - 1) & PAGE_MASK) | ||
23 | 24 | ||
25 | typedef unsigned long long phys_addr_t; | ||
24 | typedef unsigned long long dma_addr_t; | 26 | typedef unsigned long long dma_addr_t; |
25 | typedef size_t __kernel_size_t; | 27 | typedef size_t __kernel_size_t; |
26 | typedef unsigned int __wsum; | 28 | typedef unsigned int __wsum; |
@@ -57,6 +59,11 @@ static inline void *kzalloc(size_t s, gfp_t gfp) | |||
57 | return p; | 59 | return p; |
58 | } | 60 | } |
59 | 61 | ||
62 | static inline void *alloc_pages_exact(size_t s, gfp_t gfp) | ||
63 | { | ||
64 | return kmalloc(s, gfp); | ||
65 | } | ||
66 | |||
60 | static inline void kfree(void *p) | 67 | static inline void kfree(void *p) |
61 | { | 68 | { |
62 | if (p >= __kfree_ignore_start && p < __kfree_ignore_end) | 69 | if (p >= __kfree_ignore_start && p < __kfree_ignore_end) |
@@ -64,6 +71,11 @@ static inline void kfree(void *p) | |||
64 | free(p); | 71 | free(p); |
65 | } | 72 | } |
66 | 73 | ||
74 | static inline void free_pages_exact(void *p, size_t s) | ||
75 | { | ||
76 | kfree(p); | ||
77 | } | ||
78 | |||
67 | static inline void *krealloc(void *p, size_t s, gfp_t gfp) | 79 | static inline void *krealloc(void *p, size_t s, gfp_t gfp) |
68 | { | 80 | { |
69 | return realloc(p, s); | 81 | return realloc(p, s); |
@@ -105,6 +117,8 @@ static inline void free_page(unsigned long addr) | |||
105 | #define dev_err(dev, format, ...) fprintf (stderr, format, ## __VA_ARGS__) | 117 | #define dev_err(dev, format, ...) fprintf (stderr, format, ## __VA_ARGS__) |
106 | #define dev_warn(dev, format, ...) fprintf (stderr, format, ## __VA_ARGS__) | 118 | #define dev_warn(dev, format, ...) fprintf (stderr, format, ## __VA_ARGS__) |
107 | 119 | ||
120 | #define WARN_ON_ONCE(cond) ((cond) && fprintf (stderr, "WARNING\n")) | ||
121 | |||
108 | #define min(x, y) ({ \ | 122 | #define min(x, y) ({ \ |
109 | typeof(x) _min1 = (x); \ | 123 | typeof(x) _min1 = (x); \ |
110 | typeof(y) _min2 = (y); \ | 124 | typeof(y) _min2 = (y); \ |
diff --git a/tools/virtio/linux/slab.h b/tools/virtio/linux/slab.h index 81baeac8ae40..7e1c1197d439 100644 --- a/tools/virtio/linux/slab.h +++ b/tools/virtio/linux/slab.h | |||
@@ -1,2 +1,6 @@ | |||
1 | #ifndef LINUX_SLAB_H | 1 | #ifndef LINUX_SLAB_H |
2 | #define GFP_KERNEL 0 | ||
3 | #define GFP_ATOMIC 0 | ||
4 | #define __GFP_NOWARN 0 | ||
5 | #define __GFP_ZERO 0 | ||
2 | #endif | 6 | #endif |
diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h index ee125e714053..9377c8b4ac16 100644 --- a/tools/virtio/linux/virtio.h +++ b/tools/virtio/linux/virtio.h | |||
@@ -3,8 +3,12 @@ | |||
3 | #include <linux/scatterlist.h> | 3 | #include <linux/scatterlist.h> |
4 | #include <linux/kernel.h> | 4 | #include <linux/kernel.h> |
5 | 5 | ||
6 | struct device { | ||
7 | void *parent; | ||
8 | }; | ||
9 | |||
6 | struct virtio_device { | 10 | struct virtio_device { |
7 | void *dev; | 11 | struct device dev; |
8 | u64 features; | 12 | u64 features; |
9 | }; | 13 | }; |
10 | 14 | ||
diff --git a/tools/virtio/linux/virtio_config.h b/tools/virtio/linux/virtio_config.h index 57a6964a1e35..9ba11815e0a1 100644 --- a/tools/virtio/linux/virtio_config.h +++ b/tools/virtio/linux/virtio_config.h | |||
@@ -40,6 +40,19 @@ static inline void __virtio_clear_bit(struct virtio_device *vdev, | |||
40 | #define virtio_has_feature(dev, feature) \ | 40 | #define virtio_has_feature(dev, feature) \ |
41 | (__virtio_test_bit((dev), feature)) | 41 | (__virtio_test_bit((dev), feature)) |
42 | 42 | ||
43 | /** | ||
44 | * virtio_has_iommu_quirk - determine whether this device has the iommu quirk | ||
45 | * @vdev: the device | ||
46 | */ | ||
47 | static inline bool virtio_has_iommu_quirk(const struct virtio_device *vdev) | ||
48 | { | ||
49 | /* | ||
50 | * Note the reverse polarity of the quirk feature (compared to most | ||
51 | * other features), this is for compatibility with legacy systems. | ||
52 | */ | ||
53 | return !virtio_has_feature(vdev, VIRTIO_F_IOMMU_PLATFORM); | ||
54 | } | ||
55 | |||
43 | static inline bool virtio_is_little_endian(struct virtio_device *vdev) | 56 | static inline bool virtio_is_little_endian(struct virtio_device *vdev) |
44 | { | 57 | { |
45 | return virtio_has_feature(vdev, VIRTIO_F_VERSION_1) || | 58 | return virtio_has_feature(vdev, VIRTIO_F_VERSION_1) || |