[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH for-next v2] xen: make grant table configurable
Introduce CONFIG_GRANT_TABLE. Provide stubs and make sure x86 and arm hypervisors build with grant table disabled. Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx> --- v2: 1. CONFIG_GRANT_TABLE should depend on EXPERT=y 2. Define two opt_* to be 0 --- xen/arch/arm/traps.c | 2 ++ xen/arch/x86/hvm/Makefile | 2 +- xen/arch/x86/hvm/hypercall.c | 4 ++++ xen/arch/x86/hypercall.c | 2 ++ xen/arch/x86/pv/Makefile | 2 +- xen/arch/x86/pv/hypercall.c | 2 ++ xen/common/Kconfig | 11 ++++++++++ xen/common/Makefile | 2 +- xen/include/xen/grant_table.h | 48 +++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 72 insertions(+), 3 deletions(-) diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c index 221c762ada..0f1c1b6431 100644 --- a/xen/arch/arm/traps.c +++ b/xen/arch/arm/traps.c @@ -1392,7 +1392,9 @@ static arm_hypercall_t arm_hypercall_table[] = { HYPERCALL_DEPRECATED(physdev_op_compat, 1), HYPERCALL(sysctl, 2), HYPERCALL(hvm_op, 2), +#ifdef CONFIG_GRANT_TABLE HYPERCALL(grant_table_op, 3), +#endif HYPERCALL(multicall, 2), HYPERCALL(platform_op, 1), HYPERCALL_ARM(vcpu_op, 3), diff --git a/xen/arch/x86/hvm/Makefile b/xen/arch/x86/hvm/Makefile index 86b106f8e7..43e5f3a21f 100644 --- a/xen/arch/x86/hvm/Makefile +++ b/xen/arch/x86/hvm/Makefile @@ -7,7 +7,7 @@ obj-y += dm.o obj-bin-y += dom0_build.init.o obj-y += domain.o obj-y += emulate.o -obj-y += grant_table.o +obj-$(CONFIG_GRANT_TABLE) += grant_table.o obj-y += hpet.o obj-y += hvm.o obj-y += hypercall.o diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c index 19d126377a..1f667efc36 100644 --- a/xen/arch/x86/hvm/hypercall.c +++ b/xen/arch/x86/hvm/hypercall.c @@ -47,6 +47,7 @@ static long hvm_memory_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) return rc; } +#ifdef CONFIG_GRANT_TABLE static long hvm_grant_table_op( unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) uop, unsigned int count) { @@ -71,6 +72,7 @@ static long hvm_grant_table_op( else return compat_grant_table_op(cmd, uop, count); } +#endif static long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) { @@ -119,7 +121,9 @@ static long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) static const hypercall_table_t hvm_hypercall_table[] = { HVM_CALL(memory_op), +#ifdef CONFIG_GRANT_TABLE HVM_CALL(grant_table_op), +#endif COMPAT_CALL(vcpu_op), HVM_CALL(physdev_op), COMPAT_CALL(xen_version), diff --git a/xen/arch/x86/hypercall.c b/xen/arch/x86/hypercall.c index 032de8f8f8..9311b63c1e 100644 --- a/xen/arch/x86/hypercall.c +++ b/xen/arch/x86/hypercall.c @@ -47,7 +47,9 @@ const hypercall_args_t hypercall_args_table[NR_hypercalls] = ARGS(xen_version, 2), ARGS(console_io, 3), ARGS(physdev_op_compat, 1), +#ifdef CONFIG_GRANT_TABLE ARGS(grant_table_op, 3), +#endif ARGS(vm_assist, 2), COMP(update_va_mapping_otherdomain, 4, 5), ARGS(vcpu_op, 3), diff --git a/xen/arch/x86/pv/Makefile b/xen/arch/x86/pv/Makefile index 65bca04175..cf28434ba9 100644 --- a/xen/arch/x86/pv/Makefile +++ b/xen/arch/x86/pv/Makefile @@ -5,7 +5,7 @@ obj-y += emulate.o obj-y += emul-gate-op.o obj-y += emul-inv-op.o obj-y += emul-priv-op.o -obj-y += grant_table.o +obj-$(CONFIG_GRANT_TABLE) += grant_table.o obj-y += hypercall.o obj-y += iret.o obj-y += misc-hypercalls.o diff --git a/xen/arch/x86/pv/hypercall.c b/xen/arch/x86/pv/hypercall.c index 5d11911735..ee0a6da515 100644 --- a/xen/arch/x86/pv/hypercall.c +++ b/xen/arch/x86/pv/hypercall.c @@ -53,7 +53,9 @@ const hypercall_table_t pv_hypercall_table[] = { COMPAT_CALL(xen_version), HYPERCALL(console_io), COMPAT_CALL(physdev_op_compat), +#ifdef CONFIG_GRANT_TABLE COMPAT_CALL(grant_table_op), +#endif COMPAT_CALL(vm_assist), COMPAT_CALL(update_va_mapping_otherdomain), COMPAT_CALL(iret), diff --git a/xen/common/Kconfig b/xen/common/Kconfig index a79cd40441..24a1c75ec1 100644 --- a/xen/common/Kconfig +++ b/xen/common/Kconfig @@ -11,6 +11,17 @@ config COMPAT config CORE_PARKING bool +config GRANT_TABLE + bool "Grant table support" if EXPERT = "y" + default y + ---help--- + Grant table provides a generic mechanism to memory sharing + between domains. This shared memory interface underpins the + split device drivers for block and network IO in a classic + Xen setup. + + If unsure, say Y. + config HAS_ALTERNATIVE bool diff --git a/xen/common/Makefile b/xen/common/Makefile index 56fc201b6b..e748554a44 100644 --- a/xen/common/Makefile +++ b/xen/common/Makefile @@ -10,7 +10,7 @@ obj-y += event_2l.o obj-y += event_channel.o obj-y += event_fifo.o obj-$(CONFIG_CRASH_DEBUG) += gdbstub.o -obj-y += grant_table.o +obj-$(CONFIG_GRANT_TABLE) += grant_table.o obj-y += guestcopy.o obj-bin-y += gunzip.init.o obj-y += irq.o diff --git a/xen/include/xen/grant_table.h b/xen/include/xen/grant_table.h index 12e8a4b80b..6f9345d9ef 100644 --- a/xen/include/xen/grant_table.h +++ b/xen/include/xen/grant_table.h @@ -29,6 +29,7 @@ #include <asm/page.h> #include <asm/grant_table.h> +#ifdef CONFIG_GRANT_TABLE struct grant_table; extern unsigned int opt_max_grant_frames; @@ -61,4 +62,51 @@ int gnttab_get_shared_frame(struct domain *d, unsigned long idx, int gnttab_get_status_frame(struct domain *d, unsigned long idx, mfn_t *mfn); +#else + +#define opt_max_grant_frames 0 +#define opt_max_maptrack_frames 0 + +static inline int grant_table_init(struct domain *d, + unsigned int max_grant_frames, + unsigned int max_maptrack_frames) +{ + return 0; +} + +static inline void grant_table_destroy(struct domain *d) {} + +static inline void grant_table_init_vcpu(struct vcpu *v) {} + +static inline void grant_table_warn_active_grants(struct domain *d) {} + +static inline void gnttab_release_mappings(struct domain *d) {} + +static inline int mem_sharing_gref_to_gfn(struct grant_table *gt, + grant_ref_t ref, + gfn_t *gfn, uint16_t *status) +{ + return -EINVAL; +} + +static inline int gnttab_map_frame(struct domain *d, unsigned long idx, + gfn_t gfn, mfn_t *mfn) +{ + return -EINVAL; +} + +static inline int gnttab_get_shared_frame(struct domain *d, unsigned long idx, + mfn_t *mfn) +{ + return -EINVAL; +} + +static inline int gnttab_get_status_frame(struct domain *d, unsigned long idx, + mfn_t *mfn) +{ + return -EINVAL; +} + +#endif /* CONFIG_GRANT_TABLE */ + #endif /* __XEN_GRANT_TABLE_H__ */ -- 2.11.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |