Skip to content

Commit

Permalink
fixup argo=<bool>
Browse files Browse the repository at this point in the history
  • Loading branch information
andyhhp committed Jan 15, 2019
1 parent 6fcdbbb commit a00f838
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
16 changes: 8 additions & 8 deletions docs/misc/xen-command-line.pandoc
Original file line number Diff line number Diff line change
Expand Up @@ -183,17 +183,17 @@ in combination with cpuidle. This option is only expected to be useful for
developers wishing Xen to fall back to older timing methods on newer hardware.

### argo
> `= <boolean>`

> Default: `false`
= List of [ <bool> ]

Enable the Argo hypervisor-mediated interdomain communication mechanism.
Controls for the Argo hypervisor-mediated interdomain communication service.
Argo is only available when Xen is compiled with `CONFIG_ARGO` enabled.

Only available if Xen is compiled with `CONFIG_ARGO` enabled.
Argo is a interdomain communication mechanism, where Xen acts as the central
point of authority. Guests may register memory rings to recieve messages,
query the status of other domains, and send messages by hypercall, all subject
to appropriate auditing by Xen.

This allows domains access to the Argo hypercall, which supports registration
of memory rings with the hypervisor to receive messages, sending messages to
other domains by hypercall and querying the ring status of other domains.
* An overall boolean acts as a global control. Argo is disabled by default.

### asid (x86)
> `= <boolean>`
Expand Down
26 changes: 23 additions & 3 deletions xen/common/argo.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,29 @@
DEFINE_XEN_GUEST_HANDLE(xen_argo_addr_t);
DEFINE_XEN_GUEST_HANDLE(xen_argo_ring_t);

/* Xen command line option to enable argo */
static bool __read_mostly opt_argo_enabled;
boolean_param("argo", opt_argo_enabled);
static bool __read_mostly opt_argo;

static int __init parse_argo(const char *s)
{
const char *ss;
int val, rc = 0;

do {
ss = strchr(s, ',');
if ( !ss )
ss = strchr(s, '\0');

if ( (val = parse_bool(s, ss)) >= 0 )
opt_argo = val;
else
rc = -EINVAL;

s = ss + 1;
} while ( *ss );

return rc;
}
custom_param("argo", parse_argo);

typedef struct argo_ring_id
{
Expand Down

0 comments on commit a00f838

Please sign in to comment.