[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC] xen/grant_table: deprecate GNTTABOP_unmap_and_replace
On Sun, 21 Jul 2013, Ian Campbell wrote: > On Sun, 2013-07-21 at 18:34 +0100, Stefano Stabellini wrote: > > GNTTABOP_unmap_and_replace has two issues: > > - it unconditionally replaces the mapping passed in new_addr with 0; > > - it doesn't support GNTMAP_contains_pte mappings on x86, returning a > > general error instead of some forms of ENOSYS. > > > > Deprecate GNTTABOP_unmap_and_replace and introduce a new > > GNTTABOP_unmap_and_replace (12) that returns GNTST_enosys for > > GNTMAP_contains_pte requests and doesn't zero the mapping at new_addr. > > > > Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> > > --- > > xen/arch/x86/mm.c | 12 +----------- > > xen/include/public/grant_table.h | 7 ++++--- > > 2 files changed, 5 insertions(+), 14 deletions(-) > > > > diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c > > index 77dcafc..610fd09 100644 > > --- a/xen/arch/x86/mm.c > > +++ b/xen/arch/x86/mm.c > > @@ -4064,7 +4064,7 @@ int replace_grant_host_mapping( > > return destroy_grant_pte_mapping(addr, frame, curr->domain); > > > > MEM_LOG("Unsupported grant table operation"); > > - return GNTST_general_error; > > + return GNTST_enosys; > > } > > > > if ( !new_addr ) > > @@ -4102,16 +4102,6 @@ int replace_grant_host_mapping( > > > > ol1e = *pl1e; > > > > - if ( unlikely(!UPDATE_ENTRY(l1, pl1e, ol1e, l1e_empty(), > > - gl1mfn, curr, 0)) ) > > - { > > - page_unlock(l1pg); > > - put_page(l1pg); > > - MEM_LOG("Cannot delete PTE entry at %p", (unsigned long *)pl1e); > > - guest_unmap_l1e(curr, pl1e); > > - return GNTST_general_error; > > - } > > Doesn't this break all existing users of the subop? I think you need to > stick a if (op == unmap_and_replace_legacy) in here and keep the code > for that case. I don't think there are any existing users, but that's a fair point. > > - > > page_unlock(l1pg); > > put_page(l1pg); > > guest_unmap_l1e(curr, pl1e); > > diff --git a/xen/include/public/grant_table.h > > b/xen/include/public/grant_table.h > > index b8a3d6c..ae841ae 100644 > > --- a/xen/include/public/grant_table.h > > +++ b/xen/include/public/grant_table.h > > @@ -303,12 +303,13 @@ typedef uint16_t grant_status_t; > > #define GNTTABOP_transfer 4 > > #define GNTTABOP_copy 5 > > #define GNTTABOP_query_size 6 > > -#define GNTTABOP_unmap_and_replace 7 > > +#define GNTTABOP_unmap_and_replace_legacy 7 > > #if __XEN_INTERFACE_VERSION__ >= 0x0003020a > > #define GNTTABOP_set_version 8 > > #define GNTTABOP_get_status_frames 9 > > #define GNTTABOP_get_version 10 > > #define GNTTABOP_swap_grant_ref 11 > > +#define GNTTABOP_unmap_and_replace 12 > > #endif /* __XEN_INTERFACE_VERSION__ */ > > You need an ifdef here so that users specifying an old > __XEN_INTERFACE_VERSION__ get the old hypercall under the non-legacy > name. I guess I need to bump the version too? _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |