|
iPXE
|
Xen grant tables. More...
#include <stdint.h>#include <stdlib.h>#include <ipxe/io.h>#include <ipxe/xen.h>#include <xen/grant_table.h>Go to the source code of this file.
Macros | |
| #define | XENGRANT_FAIL_RATE 0 |
| Induced failure rate (for testing) | |
Functions | |
| FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
| FILE_SECBOOT (PERMITTED) | |
| static | __attribute__ ((always_inline)) int xengrant_query_size(struct xen_hypervisor *xen |
| Query grant table size. | |
| return (container_of(&v1->flags, struct grant_entry_header, flags)) | |
| static void | xengrant_zero (struct xen_hypervisor *xen, struct grant_entry_header *hdr) |
| Zero grant table entry. | |
| assert ((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0) | |
| writew (0, &hdr->flags) | |
| writew (DOMID_SELF, &hdr->domid) | |
| if ((XENGRANT_FAIL_RATE > 0) &&(random() % XENGRANT_FAIL_RATE)==0) | |
| if (sizeof(physaddr_t)==sizeof(uint64_t)) | |
| wmb () | |
| writew ((GTF_permit_access|subflags), &hdr->flags) | |
| int | xengrant_init (struct xen_hypervisor *xen) |
| Initialise grant table. | |
| int | xengrant_alloc (struct xen_hypervisor *xen, grant_ref_t *refs, unsigned int count) |
| Allocate grant references. | |
| void | xengrant_free (struct xen_hypervisor *xen, grant_ref_t *refs, unsigned int count) |
| Free grant references. | |
Variables | |
| static struct gnttab_query_size * | size |
| static struct gnttab_set_version * | version |
| static grant_ref_t | ref |
| v1 = &xen->grant.table[ ref << xen->grant.shift ] | |
| static grant_ref_t domid_t | domid |
| static grant_ref_t domid_t unsigned int | subflags |
| static grant_ref_t domid_t unsigned int physaddr_t | addr |
| union grant_entry_v2 * | v2 = xengrant_v2 ( hdr ) |
| unsigned long | frame = ( addr / PAGE_SIZE ) |
| else | |
| return | |
Xen grant tables.
Definition in file xengrant.h.
| #define XENGRANT_FAIL_RATE 0 |
| FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
| FILE_SECBOOT | ( | PERMITTED | ) |
|
inlinestatic |
Query grant table size.
Permit access to a page.
Invalidate access to a page.
Get version 2 grant table entry.
Get version 1 grant table entry.
Get grant table entry header.
Get number of grant table entries.
Get grant table version.
Set grant table version.
| xen | Xen hypervisor |
| size | Table size |
| xenrc | Xen status code |
| xen | Xen hypervisor |
| version | Version |
| xenrc | Xen status code |
| xen | Xen hypervisor |
| entries | Number of grant table entries |
| xen | Xen hypervisor |
| ref | Grant reference |
| hdr | Grant table entry header |
| hdr | Grant table entry header |
| v1 | Version 1 grant table entry |
| hdr | Grant table entry header |
| v2 | Version 2 grant table entry |
| xen | Xen hypervisor |
| ref | Grant reference |
| xen | Xen hypervisor |
| ref | Grant reference |
| domid | Domain ID |
| subflags | Additional flags |
| addr | Physical address within page |
| rc | Return status code |
Definition at line 76 of file xengrant.h.
References xen_hypervisor::grant, xen_grant::len, xen_grant::shift, and xen_grant::table.
| return | ( | container_of &->,, | flags | ) |
References container_of, flags, and v1.
|
inlinestatic |
Zero grant table entry.
| xen | Xen hypervisor |
| hdr | Grant table entry header |
Definition at line 128 of file xengrant.h.
References xen_hypervisor::grant, hdr, xen_grant::shift, xen_grant::table, and writel.
Referenced by xengrant_alloc(), and xengrant_free().
| assert | ( | (readw(&hdr->flags) &(GTF_reading|GTF_writing)) | = =0 | ) |
References GTF_reading, GTF_writing, hdr, and readw.
| writew | ( | DOMID_SELF | , |
| &hdr-> | domid ) |
References DOMID_SELF, and hdr.
| if | ( | (XENGRANT_FAIL_RATE > 0) &&(random() % XENGRANT_FAIL_RATE) | = = 0 | ) |
| if | ( | sizeof(physaddr_t) | = = sizeof ( uint64_t ) | ) |
Definition at line 194 of file xengrant.h.
References ERANGE, frame, xen_hypervisor::grant, xen_grant::shift, v1, v2, writel, and writeq.
| wmb | ( | ) |
| writew | ( | (GTF_permit_access|subflags) | , |
| &hdr-> | flags ) |
References GTF_permit_access, hdr, and subflags.
|
extern |
Initialise grant table.
| xen | Xen hypervisor |
| rc | Return status code |
Definition at line 71 of file xengrant.c.
References DBGC, DOMID_SELF, ENOTSUP, EXEN, fls, xen_hypervisor::grant, grant_entry_v1, xen_grant::len, PAGE_SIZE, rc, xen_grant::shift, size, strerror(), v1, v2, version, and XENGRANT_TRY_VERSION.
Referenced by hvm_map_grant().
|
extern |
Allocate grant references.
| xen | Xen hypervisor |
| refs | Grant references to fill in |
| count | Number of references |
| rc | Return status code |
Definition at line 149 of file xengrant.c.
References assert, count, DBGC, DBGC2, DOMID_SELF, ENOBUFS, GNTTAB_NR_RESERVED_ENTRIES, xen_hypervisor::grant, GTF_type_mask, hdr, readw, ref, xen_grant::ref, refs, xen_grant::used, writew, and xengrant_zero().
Referenced by netfront_probe().
|
extern |
Free grant references.
| xen | Xen hypervisor |
| refs | Grant references |
| count | Number of references |
Definition at line 215 of file xengrant.c.
References assert, count, DBGC2, hdr, ref, refs, and xengrant_zero().
Referenced by netfront_probe(), and netfront_remove().
| struct gnttab_query_size* size |
Definition at line 31 of file xengrant.h.
| struct gnttab_get_version* version |
Definition at line 47 of file xengrant.h.
| grant_ref_t ref |
Definition at line 91 of file xengrant.h.
| struct grant_entry_v1 * v1 = &xen->grant.table[ ref << xen->grant.shift ] |
Definition at line 94 of file xengrant.h.
Referenced by if(), return(), and xengrant_init().
| grant_ref_t domid_t domid |
Definition at line 175 of file xengrant.h.
Referenced by DEFINE_XEN_GUEST_HANDLE().
| grant_ref_t domid_t unsigned int subflags |
Definition at line 175 of file xengrant.h.
Referenced by writew().
| grant_ref_t domid_t unsigned int physaddr_t addr |
Definition at line 176 of file xengrant.h.
| union grant_entry_v2* v2 = xengrant_v2 ( hdr ) |
Definition at line 179 of file xengrant.h.
Referenced by if(), and xengrant_init().
Definition at line 180 of file xengrant.h.
Referenced by amd8111e_transmit(), bnx2_transmit(), fc_els_detect(), fc_els_prli_detect(), fc_els_prli_rx(), fc_els_prli_tx(), fc_els_rx(), fcoe_fip_rx_els_response(), and if().
| else |
Definition at line 207 of file xengrant.h.
| return |
Definition at line 225 of file xengrant.h.