diff --git a/CHANGELOG.md b/CHANGELOG.md index faf2271011..ec452027f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Ability to enable stack protector ### Removed + - On x86: + - GNTTABOP_cache_flush: it's unused on x86 and the implementation is + broken. ## [4.20.0](https://xenbits.xenproject.org/gitweb/?p=xen.git;a=shortlog;h=RELEASE-4.20.0) - 2025-03-05 diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig index 3321d89068..a5aad97a68 100644 --- a/xen/arch/arm/Kconfig +++ b/xen/arch/arm/Kconfig @@ -17,6 +17,7 @@ config ARM select HAS_ALTERNATIVE if HAS_VMAP select HAS_DEVICE_TREE select HAS_DOM0LESS + select HAS_GRANT_CACHE_FLUSH if GRANT_TABLE select HAS_STACK_PROTECTOR select HAS_UBSAN diff --git a/xen/arch/x86/include/asm/flushtlb.h b/xen/arch/x86/include/asm/flushtlb.h index 209ea1e62f..cd625f9114 100644 --- a/xen/arch/x86/include/asm/flushtlb.h +++ b/xen/arch/x86/include/asm/flushtlb.h @@ -184,25 +184,6 @@ void flush_area_mask(const cpumask_t *mask, const void *va, } static inline void flush_page_to_ram(unsigned long mfn, bool sync_icache) {} -static inline int invalidate_dcache_va_range(const void *p, - unsigned long size) -{ return -EOPNOTSUPP; } -static inline int clean_and_invalidate_dcache_va_range(const void *p, - unsigned long size) -{ - unsigned int order = get_order_from_bytes(size); - /* sub-page granularity support needs to be added if necessary */ - flush_area_local(p, FLUSH_CACHE|FLUSH_ORDER(order)); - return 0; -} -static inline int clean_dcache_va_range(const void *p, unsigned long size) -{ - unsigned int order = get_order_from_bytes(size); - - /* sub-page granularity support needs to be added if necessary */ - flush_area_local(p, FLUSH_CACHE_WRITEBACK | FLUSH_ORDER(order)); - return 0; -} unsigned int guest_flush_tlb_flags(const struct domain *d); void guest_flush_tlb_mask(const struct domain *d, const cpumask_t *mask); diff --git a/xen/common/Kconfig b/xen/common/Kconfig index 6d43be2e6e..3d66d09397 100644 --- a/xen/common/Kconfig +++ b/xen/common/Kconfig @@ -35,6 +35,9 @@ config GRANT_TABLE If unsure, say Y. +config HAS_GRANT_CACHE_FLUSH + bool + config EVTCHN_FIFO bool "Event Channel Fifo support" if EXPERT default y diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index e75ff98aff..cf131c43a1 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -940,6 +940,7 @@ static void reduce_status_for_pin(struct domain *rd, gnttab_clear_flags(rd, clear_flags, status); } +#ifdef CONFIG_HAS_GRANT_CACHE_FLUSH static struct active_grant_entry *grant_map_exists(const struct domain *ld, struct grant_table *rgt, mfn_t mfn, @@ -975,6 +976,7 @@ static struct active_grant_entry *grant_map_exists(const struct domain *ld, return ERR_PTR(-EINVAL); } +#endif /* CONFIG_HAS_GRANT_CACHE_FLUSH */ union maptrack_node { struct { @@ -3520,6 +3522,7 @@ gnttab_swap_grant_ref(XEN_GUEST_HANDLE_PARAM(gnttab_swap_grant_ref_t) uop, return 0; } +#ifdef CONFIG_HAS_GRANT_CACHE_FLUSH static int _cache_flush(const gnttab_cache_flush_t *cflush, grant_ref_t *cur_ref) { struct domain *d, *owner; @@ -3631,6 +3634,7 @@ gnttab_cache_flush(XEN_GUEST_HANDLE_PARAM(gnttab_cache_flush_t) uop, return 0; } +#endif /* CONFIG_HAS_GRANT_CACHE_FLUSH */ long do_grant_table_op( unsigned int cmd, XEN_GUEST_HANDLE_PARAM(void) uop, unsigned int count) @@ -3773,6 +3777,7 @@ long do_grant_table_op( break; } +#ifdef CONFIG_HAS_GRANT_CACHE_FLUSH case GNTTABOP_cache_flush: { XEN_GUEST_HANDLE_PARAM(gnttab_cache_flush_t) cflush = @@ -3789,6 +3794,7 @@ long do_grant_table_op( } break; } +#endif /* CONFIG_HAS_GRANT_CACHE_FLUSH */ default: rc = -ENOSYS;