Message ID | 1606732298-22107-11-git-send-email-olekstysh@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [V3,01/23] x86/ioreq: Prepare IOREQ feature for making it common | expand |
On 30.11.2020 11:31, Oleksandr Tyshchenko wrote: > --- a/xen/arch/x86/mm.c > +++ b/xen/arch/x86/mm.c > @@ -4699,50 +4699,6 @@ int xenmem_add_to_physmap_one( > return rc; > } > > -int arch_acquire_resource(struct domain *d, unsigned int type, > - unsigned int id, unsigned long frame, > - unsigned int nr_frames, xen_pfn_t mfn_list[]) > -{ > - int rc; > - > - switch ( type ) > - { > -#ifdef CONFIG_HVM > - case XENMEM_resource_ioreq_server: > - { > - ioservid_t ioservid = id; > - unsigned int i; > - > - rc = -EINVAL; > - if ( !is_hvm_domain(d) ) > - break; > - > - if ( id != (unsigned int)ioservid ) > - break; > - > - rc = 0; > - for ( i = 0; i < nr_frames; i++ ) > - { > - mfn_t mfn; > - > - rc = hvm_get_ioreq_server_frame(d, id, frame + i, &mfn); > - if ( rc ) > - break; > - > - mfn_list[i] = mfn_x(mfn); > - } > - break; > - } > -#endif > - > - default: > - rc = -EOPNOTSUPP; > - break; > - } > - > - return rc; > -} Can't this be accompanied by removal of the xen/ioreq.h inclusion? (I'm only looking at patch 4 right now, but the renaming there made the soon to be unnecessary #include quite apparent.) Jan
On 07.12.2020 12:35, Jan Beulich wrote: > On 30.11.2020 11:31, Oleksandr Tyshchenko wrote: >> --- a/xen/arch/x86/mm.c >> +++ b/xen/arch/x86/mm.c >> @@ -4699,50 +4699,6 @@ int xenmem_add_to_physmap_one( >> return rc; >> } >> >> -int arch_acquire_resource(struct domain *d, unsigned int type, >> - unsigned int id, unsigned long frame, >> - unsigned int nr_frames, xen_pfn_t mfn_list[]) >> -{ >> - int rc; >> - >> - switch ( type ) >> - { >> -#ifdef CONFIG_HVM >> - case XENMEM_resource_ioreq_server: >> - { >> - ioservid_t ioservid = id; >> - unsigned int i; >> - >> - rc = -EINVAL; >> - if ( !is_hvm_domain(d) ) >> - break; >> - >> - if ( id != (unsigned int)ioservid ) >> - break; >> - >> - rc = 0; >> - for ( i = 0; i < nr_frames; i++ ) >> - { >> - mfn_t mfn; >> - >> - rc = hvm_get_ioreq_server_frame(d, id, frame + i, &mfn); >> - if ( rc ) >> - break; >> - >> - mfn_list[i] = mfn_x(mfn); >> - } >> - break; >> - } >> -#endif >> - >> - default: >> - rc = -EOPNOTSUPP; >> - break; >> - } >> - >> - return rc; >> -} > > Can't this be accompanied by removal of the xen/ioreq.h inclusion? > (I'm only looking at patch 4 right now, but the renaming there made > the soon to be unnecessary #include quite apparent.) And then, now that I've looked at this patch as a whole, Reviewed-by: Jan Beulich <jbeulich@suse.com> Jan
On 07.12.20 14:11, Jan Beulich wrote: Hi Jan > On 07.12.2020 12:35, Jan Beulich wrote: >> On 30.11.2020 11:31, Oleksandr Tyshchenko wrote: >>> --- a/xen/arch/x86/mm.c >>> +++ b/xen/arch/x86/mm.c >>> @@ -4699,50 +4699,6 @@ int xenmem_add_to_physmap_one( >>> return rc; >>> } >>> >>> -int arch_acquire_resource(struct domain *d, unsigned int type, >>> - unsigned int id, unsigned long frame, >>> - unsigned int nr_frames, xen_pfn_t mfn_list[]) >>> -{ >>> - int rc; >>> - >>> - switch ( type ) >>> - { >>> -#ifdef CONFIG_HVM >>> - case XENMEM_resource_ioreq_server: >>> - { >>> - ioservid_t ioservid = id; >>> - unsigned int i; >>> - >>> - rc = -EINVAL; >>> - if ( !is_hvm_domain(d) ) >>> - break; >>> - >>> - if ( id != (unsigned int)ioservid ) >>> - break; >>> - >>> - rc = 0; >>> - for ( i = 0; i < nr_frames; i++ ) >>> - { >>> - mfn_t mfn; >>> - >>> - rc = hvm_get_ioreq_server_frame(d, id, frame + i, &mfn); >>> - if ( rc ) >>> - break; >>> - >>> - mfn_list[i] = mfn_x(mfn); >>> - } >>> - break; >>> - } >>> -#endif >>> - >>> - default: >>> - rc = -EOPNOTSUPP; >>> - break; >>> - } >>> - >>> - return rc; >>> -} >> Can't this be accompanied by removal of the xen/ioreq.h inclusion? >> (I'm only looking at patch 4 right now, but the renaming there made >> the soon to be unnecessary #include quite apparent.) > And then, now that I've looked at this patch as a whole, > Reviewed-by: Jan Beulich <jbeulich@suse.com> Great, thank you.
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index e4638ef..c0a7124 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -4699,50 +4699,6 @@ int xenmem_add_to_physmap_one( return rc; } -int arch_acquire_resource(struct domain *d, unsigned int type, - unsigned int id, unsigned long frame, - unsigned int nr_frames, xen_pfn_t mfn_list[]) -{ - int rc; - - switch ( type ) - { -#ifdef CONFIG_HVM - case XENMEM_resource_ioreq_server: - { - ioservid_t ioservid = id; - unsigned int i; - - rc = -EINVAL; - if ( !is_hvm_domain(d) ) - break; - - if ( id != (unsigned int)ioservid ) - break; - - rc = 0; - for ( i = 0; i < nr_frames; i++ ) - { - mfn_t mfn; - - rc = hvm_get_ioreq_server_frame(d, id, frame + i, &mfn); - if ( rc ) - break; - - mfn_list[i] = mfn_x(mfn); - } - break; - } -#endif - - default: - rc = -EOPNOTSUPP; - break; - } - - return rc; -} - long arch_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg) { int rc; diff --git a/xen/common/memory.c b/xen/common/memory.c index 2c86934..92cf983 100644 --- a/xen/common/memory.c +++ b/xen/common/memory.c @@ -8,22 +8,23 @@ */ #include <xen/domain_page.h> -#include <xen/types.h> +#include <xen/errno.h> +#include <xen/event.h> +#include <xen/grant_table.h> +#include <xen/guest_access.h> +#include <xen/hypercall.h> +#include <xen/iocap.h> +#include <xen/ioreq.h> #include <xen/lib.h> +#include <xen/mem_access.h> #include <xen/mm.h> +#include <xen/numa.h> +#include <xen/paging.h> #include <xen/param.h> #include <xen/perfc.h> #include <xen/sched.h> -#include <xen/event.h> -#include <xen/paging.h> -#include <xen/iocap.h> -#include <xen/guest_access.h> -#include <xen/hypercall.h> -#include <xen/errno.h> -#include <xen/numa.h> -#include <xen/mem_access.h> #include <xen/trace.h> -#include <xen/grant_table.h> +#include <xen/types.h> #include <asm/current.h> #include <asm/hardirq.h> #include <asm/p2m.h> @@ -1086,6 +1087,40 @@ static int acquire_grant_table(struct domain *d, unsigned int id, return 0; } +static int acquire_ioreq_server(struct domain *d, + unsigned int id, + unsigned long frame, + unsigned int nr_frames, + xen_pfn_t mfn_list[]) +{ +#ifdef CONFIG_IOREQ_SERVER + ioservid_t ioservid = id; + unsigned int i; + int rc; + + if ( !is_hvm_domain(d) ) + return -EINVAL; + + if ( id != (unsigned int)ioservid ) + return -EINVAL; + + for ( i = 0; i < nr_frames; i++ ) + { + mfn_t mfn; + + rc = hvm_get_ioreq_server_frame(d, id, frame + i, &mfn); + if ( rc ) + return rc; + + mfn_list[i] = mfn_x(mfn); + } + + return 0; +#else + return -EOPNOTSUPP; +#endif +} + static int acquire_resource( XEN_GUEST_HANDLE_PARAM(xen_mem_acquire_resource_t) arg) { @@ -1144,9 +1179,13 @@ static int acquire_resource( mfn_list); break; + case XENMEM_resource_ioreq_server: + rc = acquire_ioreq_server(d, xmar.id, xmar.frame, xmar.nr_frames, + mfn_list); + break; + default: - rc = arch_acquire_resource(d, xmar.type, xmar.id, xmar.frame, - xmar.nr_frames, mfn_list); + rc = -EOPNOTSUPP; break; } diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h index f8ba49b..0b7de31 100644 --- a/xen/include/asm-arm/mm.h +++ b/xen/include/asm-arm/mm.h @@ -358,14 +358,6 @@ static inline void put_page_and_type(struct page_info *page) void clear_and_clean_page(struct page_info *page); -static inline -int arch_acquire_resource(struct domain *d, unsigned int type, unsigned int id, - unsigned long frame, unsigned int nr_frames, - xen_pfn_t mfn_list[]) -{ - return -EOPNOTSUPP; -} - unsigned int arch_get_dma_bitsize(void); #endif /* __ARCH_ARM_MM__ */ diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h index deeba75..859214e 100644 --- a/xen/include/asm-x86/mm.h +++ b/xen/include/asm-x86/mm.h @@ -639,8 +639,4 @@ static inline bool arch_mfn_in_directmap(unsigned long mfn) return mfn <= (virt_to_mfn(eva - 1) + 1); } -int arch_acquire_resource(struct domain *d, unsigned int type, - unsigned int id, unsigned long frame, - unsigned int nr_frames, xen_pfn_t mfn_list[]); - #endif /* __ASM_X86_MM_H__ */