Specify which console gdbstub should use. See **console**.
### gnttab
-> `= List of [ max-ver:<integer>, transitive=<bool> ]`
+> `= List of [ max-ver:<integer>, transitive=<bool>, transfer=<bool> ]`
-> Default: `gnttab=max-ver:2,transitive`
+> Default: `gnttab=max-ver:2,transitive,transfer`
Control various aspects of the grant table behaviour available to guests.
* `transitive` Permit or disallow the use of transitive grants. Note that the
use of grant table v2 without transitive grants is an ABI breakage from the
guests point of view.
+* `transfer` Permit or disallow the GNTTABOP_transfer operation of the
+grant table hypercall. Note that disallowing GNTTABOP_transfer is an ABI
+breakage from the guests point of view. This option is only available on
+hypervisors configured to support PV guests.
The usage of gnttab v2 is not security supported on ARM platforms.
unsigned int __read_mostly opt_gnttab_max_version = GNTTAB_MAX_VERSION;
static bool __read_mostly opt_transitive_grants = true;
+#ifdef CONFIG_PV
+static bool __ro_after_init opt_grant_transfer = true;
+#else
+#define opt_grant_transfer false
+#endif
static int __init parse_gnttab(const char *s)
{
}
else if ( (val = parse_boolean("transitive", s, ss)) >= 0 )
opt_transitive_grants = val;
+#ifndef opt_grant_transfer
+ else if ( (val = parse_boolean("transfer", s, ss)) >= 0 )
+ opt_grant_transfer = val;
+#endif
else
rc = -EINVAL;
unsigned int max_bitsize;
struct active_grant_entry *act;
+ if ( !opt_grant_transfer )
+ return -EOPNOTSUPP;
+
for ( i = 0; i < count; i++ )
{
bool_t okay;