~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/uapi/linux/virtio_balloon.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/uapi/linux/virtio_balloon.h (Architecture sparc64) and /include/uapi/linux/virtio_balloon.h (Architecture ppc)


  1 #ifndef _LINUX_VIRTIO_BALLOON_H                     1 #ifndef _LINUX_VIRTIO_BALLOON_H
  2 #define _LINUX_VIRTIO_BALLOON_H                     2 #define _LINUX_VIRTIO_BALLOON_H
  3 /* This header is BSD licensed so anyone can u      3 /* This header is BSD licensed so anyone can use the definitions to implement
  4  * compatible drivers/servers.                      4  * compatible drivers/servers.
  5  *                                                  5  *
  6  * Redistribution and use in source and binary      6  * Redistribution and use in source and binary forms, with or without
  7  * modification, are permitted provided that t      7  * modification, are permitted provided that the following conditions
  8  * are met:                                         8  * are met:
  9  * 1. Redistributions of source code must reta      9  * 1. Redistributions of source code must retain the above copyright
 10  *    notice, this list of conditions and the      10  *    notice, this list of conditions and the following disclaimer.
 11  * 2. Redistributions in binary form must repr     11  * 2. Redistributions in binary form must reproduce the above copyright
 12  *    notice, this list of conditions and the      12  *    notice, this list of conditions and the following disclaimer in the
 13  *    documentation and/or other materials pro     13  *    documentation and/or other materials provided with the distribution.
 14  * 3. Neither the name of IBM nor the names of     14  * 3. Neither the name of IBM nor the names of its contributors
 15  *    may be used to endorse or promote produc     15  *    may be used to endorse or promote products derived from this software
 16  *    without specific prior written permissio     16  *    without specific prior written permission.
 17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT      17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
 18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDIN     18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND F     19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 20  * ARE DISCLAIMED.  IN NO EVENT SHALL IBM OR C     20  * ARE DISCLAIMED.  IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE
 21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECI     21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PRO     22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS;     23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILI     24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR     25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF AD     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/types.h>
 29 #include <linux/virtio_types.h>                    29 #include <linux/virtio_types.h>
 30 #include <linux/virtio_ids.h>                      30 #include <linux/virtio_ids.h>
 31 #include <linux/virtio_config.h>                   31 #include <linux/virtio_config.h>
 32                                                    32 
 33 /* The feature bitmap for virtio balloon */        33 /* The feature bitmap for virtio balloon */
 34 #define VIRTIO_BALLOON_F_MUST_TELL_HOST 0 /* T     34 #define VIRTIO_BALLOON_F_MUST_TELL_HOST 0 /* Tell before reclaiming pages */
 35 #define VIRTIO_BALLOON_F_STATS_VQ       1 /* M     35 #define VIRTIO_BALLOON_F_STATS_VQ       1 /* Memory Stats virtqueue */
 36 #define VIRTIO_BALLOON_F_DEFLATE_ON_OOM 2 /* D     36 #define VIRTIO_BALLOON_F_DEFLATE_ON_OOM 2 /* Deflate balloon on OOM */
 37 #define VIRTIO_BALLOON_F_FREE_PAGE_HINT 3 /* V     37 #define VIRTIO_BALLOON_F_FREE_PAGE_HINT 3 /* VQ to report free pages */
 38 #define VIRTIO_BALLOON_F_PAGE_POISON    4 /* G     38 #define VIRTIO_BALLOON_F_PAGE_POISON    4 /* Guest is using page poisoning */
 39 #define VIRTIO_BALLOON_F_REPORTING      5 /* P     39 #define VIRTIO_BALLOON_F_REPORTING      5 /* Page reporting virtqueue */
 40                                                    40 
 41 /* Size of a PFN in the balloon interface. */      41 /* Size of a PFN in the balloon interface. */
 42 #define VIRTIO_BALLOON_PFN_SHIFT 12                42 #define VIRTIO_BALLOON_PFN_SHIFT 12
 43                                                    43 
 44 #define VIRTIO_BALLOON_CMD_ID_STOP      0          44 #define VIRTIO_BALLOON_CMD_ID_STOP      0
 45 #define VIRTIO_BALLOON_CMD_ID_DONE      1          45 #define VIRTIO_BALLOON_CMD_ID_DONE      1
 46 struct virtio_balloon_config {                     46 struct virtio_balloon_config {
 47         /* Number of pages host wants Guest to     47         /* Number of pages host wants Guest to give up. */
 48         __le32 num_pages;                          48         __le32 num_pages;
 49         /* Number of pages we've actually got      49         /* Number of pages we've actually got in balloon. */
 50         __le32 actual;                             50         __le32 actual;
 51         /*                                         51         /*
 52          * Free page hint command id, readonly     52          * Free page hint command id, readonly by guest.
 53          * Was previously named free_page_repo     53          * Was previously named free_page_report_cmd_id so we
 54          * need to carry that name for legacy      54          * need to carry that name for legacy support.
 55          */                                        55          */
 56         union {                                    56         union {
 57                 __le32 free_page_hint_cmd_id;      57                 __le32 free_page_hint_cmd_id;
 58                 __le32 free_page_report_cmd_id     58                 __le32 free_page_report_cmd_id; /* deprecated */
 59         };                                         59         };
 60         /* Stores PAGE_POISON if page poisonin     60         /* Stores PAGE_POISON if page poisoning is in use */
 61         __le32 poison_val;                         61         __le32 poison_val;
 62 };                                                 62 };
 63                                                    63 
 64 #define VIRTIO_BALLOON_S_SWAP_IN  0   /* Amoun     64 #define VIRTIO_BALLOON_S_SWAP_IN  0   /* Amount of memory swapped in */
 65 #define VIRTIO_BALLOON_S_SWAP_OUT 1   /* Amoun     65 #define VIRTIO_BALLOON_S_SWAP_OUT 1   /* Amount of memory swapped out */
 66 #define VIRTIO_BALLOON_S_MAJFLT   2   /* Numbe     66 #define VIRTIO_BALLOON_S_MAJFLT   2   /* Number of major faults */
 67 #define VIRTIO_BALLOON_S_MINFLT   3   /* Numbe     67 #define VIRTIO_BALLOON_S_MINFLT   3   /* Number of minor faults */
 68 #define VIRTIO_BALLOON_S_MEMFREE  4   /* Total     68 #define VIRTIO_BALLOON_S_MEMFREE  4   /* Total amount of free memory */
 69 #define VIRTIO_BALLOON_S_MEMTOT   5   /* Total     69 #define VIRTIO_BALLOON_S_MEMTOT   5   /* Total amount of memory */
 70 #define VIRTIO_BALLOON_S_AVAIL    6   /* Avail     70 #define VIRTIO_BALLOON_S_AVAIL    6   /* Available memory as in /proc */
 71 #define VIRTIO_BALLOON_S_CACHES   7   /* Disk      71 #define VIRTIO_BALLOON_S_CACHES   7   /* Disk caches */
 72 #define VIRTIO_BALLOON_S_HTLB_PGALLOC  8  /* H     72 #define VIRTIO_BALLOON_S_HTLB_PGALLOC  8  /* Hugetlb page allocations */
 73 #define VIRTIO_BALLOON_S_HTLB_PGFAIL   9  /* H     73 #define VIRTIO_BALLOON_S_HTLB_PGFAIL   9  /* Hugetlb page allocation failures */
 74 #define VIRTIO_BALLOON_S_OOM_KILL      10 /* O     74 #define VIRTIO_BALLOON_S_OOM_KILL      10 /* OOM killer invocations */
 75 #define VIRTIO_BALLOON_S_ALLOC_STALL   11 /* S     75 #define VIRTIO_BALLOON_S_ALLOC_STALL   11 /* Stall count of memory allocatoin */
 76 #define VIRTIO_BALLOON_S_ASYNC_SCAN    12 /* A     76 #define VIRTIO_BALLOON_S_ASYNC_SCAN    12 /* Amount of memory scanned asynchronously */
 77 #define VIRTIO_BALLOON_S_DIRECT_SCAN   13 /* A     77 #define VIRTIO_BALLOON_S_DIRECT_SCAN   13 /* Amount of memory scanned directly */
 78 #define VIRTIO_BALLOON_S_ASYNC_RECLAIM 14 /* A     78 #define VIRTIO_BALLOON_S_ASYNC_RECLAIM 14 /* Amount of memory reclaimed asynchronously */
 79 #define VIRTIO_BALLOON_S_DIRECT_RECLAIM 15 /*      79 #define VIRTIO_BALLOON_S_DIRECT_RECLAIM 15 /* Amount of memory reclaimed directly */
 80 #define VIRTIO_BALLOON_S_NR       16               80 #define VIRTIO_BALLOON_S_NR       16
 81                                                    81 
 82 #define VIRTIO_BALLOON_S_NAMES_WITH_PREFIX(VIR     82 #define VIRTIO_BALLOON_S_NAMES_WITH_PREFIX(VIRTIO_BALLOON_S_NAMES_prefix) { \
 83         VIRTIO_BALLOON_S_NAMES_prefix "swap-in     83         VIRTIO_BALLOON_S_NAMES_prefix "swap-in", \
 84         VIRTIO_BALLOON_S_NAMES_prefix "swap-ou     84         VIRTIO_BALLOON_S_NAMES_prefix "swap-out", \
 85         VIRTIO_BALLOON_S_NAMES_prefix "major-f     85         VIRTIO_BALLOON_S_NAMES_prefix "major-faults", \
 86         VIRTIO_BALLOON_S_NAMES_prefix "minor-f     86         VIRTIO_BALLOON_S_NAMES_prefix "minor-faults", \
 87         VIRTIO_BALLOON_S_NAMES_prefix "free-me     87         VIRTIO_BALLOON_S_NAMES_prefix "free-memory", \
 88         VIRTIO_BALLOON_S_NAMES_prefix "total-m     88         VIRTIO_BALLOON_S_NAMES_prefix "total-memory", \
 89         VIRTIO_BALLOON_S_NAMES_prefix "availab     89         VIRTIO_BALLOON_S_NAMES_prefix "available-memory", \
 90         VIRTIO_BALLOON_S_NAMES_prefix "disk-ca     90         VIRTIO_BALLOON_S_NAMES_prefix "disk-caches", \
 91         VIRTIO_BALLOON_S_NAMES_prefix "hugetlb     91         VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-allocations", \
 92         VIRTIO_BALLOON_S_NAMES_prefix "hugetlb     92         VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-failures", \
 93         VIRTIO_BALLOON_S_NAMES_prefix "oom-kil     93         VIRTIO_BALLOON_S_NAMES_prefix "oom-kills", \
 94         VIRTIO_BALLOON_S_NAMES_prefix "alloc-s     94         VIRTIO_BALLOON_S_NAMES_prefix "alloc-stalls", \
 95         VIRTIO_BALLOON_S_NAMES_prefix "async-s     95         VIRTIO_BALLOON_S_NAMES_prefix "async-scans", \
 96         VIRTIO_BALLOON_S_NAMES_prefix "direct-     96         VIRTIO_BALLOON_S_NAMES_prefix "direct-scans", \
 97         VIRTIO_BALLOON_S_NAMES_prefix "async-r     97         VIRTIO_BALLOON_S_NAMES_prefix "async-reclaims", \
 98         VIRTIO_BALLOON_S_NAMES_prefix "direct-     98         VIRTIO_BALLOON_S_NAMES_prefix "direct-reclaims" \
 99 }                                                  99 }
100                                                   100 
101 #define VIRTIO_BALLOON_S_NAMES VIRTIO_BALLOON_    101 #define VIRTIO_BALLOON_S_NAMES VIRTIO_BALLOON_S_NAMES_WITH_PREFIX("")
102                                                   102 
103 /*                                                103 /*
104  * Memory statistics structure.                   104  * Memory statistics structure.
105  * Driver fills an array of these structures a    105  * Driver fills an array of these structures and passes to device.
106  *                                                106  *
107  * NOTE: fields are laid out in a way that wou    107  * NOTE: fields are laid out in a way that would make compiler add padding
108  * between and after fields, so we have to use    108  * between and after fields, so we have to use compiler-specific attributes to
109  * pack it, to disable this padding. This also    109  * pack it, to disable this padding. This also often causes compiler to
110  * generate suboptimal code.                      110  * generate suboptimal code.
111  *                                                111  *
112  * We maintain this statistics structure forma    112  * We maintain this statistics structure format for backwards compatibility,
113  * but don't follow this example.                 113  * but don't follow this example.
114  *                                                114  *
115  * If implementing a similar structure, do som    115  * If implementing a similar structure, do something like the below instead:
116  *     struct virtio_balloon_stat {               116  *     struct virtio_balloon_stat {
117  *         __virtio16 tag;                        117  *         __virtio16 tag;
118  *         __u8 reserved[6];                      118  *         __u8 reserved[6];
119  *         __virtio64 val;                        119  *         __virtio64 val;
120  *     };                                         120  *     };
121  *                                                121  *
122  * In other words, add explicit reserved field    122  * In other words, add explicit reserved fields to align field and
123  * structure boundaries at field size, avoidin    123  * structure boundaries at field size, avoiding compiler padding
124  * without the packed attribute.                  124  * without the packed attribute.
125  */                                               125  */
126 struct virtio_balloon_stat {                      126 struct virtio_balloon_stat {
127         __virtio16 tag;                           127         __virtio16 tag;
128         __virtio64 val;                           128         __virtio64 val;
129 } __attribute__((packed));                        129 } __attribute__((packed));
130                                                   130 
131 #endif /* _LINUX_VIRTIO_BALLOON_H */              131 #endif /* _LINUX_VIRTIO_BALLOON_H */
132                                                   132 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php