* by bit operations.
         */
        int (*query_foreign_access)(grant_ref_t ref);
-       /*
-        * Grant a domain to access a range of bytes within the page referred by
-        * an available grant entry. Ref parameter is reference of a grant entry
-        * which will be sub-page accessed, domid is id of grantee domain, frame
-        * is frame address of subpage grant, flags is grant type and flag
-        * information, page_off is offset of the range of bytes, and length is
-        * length of bytes to be accessed.
-        */
-       void (*update_subpage_entry)(grant_ref_t ref, domid_t domid,
-                                    unsigned long frame, int flags,
-                                    unsigned page_off, unsigned length);
-       /*
-        * Redirect an available grant entry on domain A to another grant
-        * reference of domain B, then allow domain C to use grant reference
-        * of domain B transitively. Ref parameter is an available grant entry
-        * reference on domain A, domid is id of domain C which accesses grant
-        * entry transitively, flags is grant type and flag information,
-        * trans_domid is id of domain B whose grant entry is finally accessed
-        * transitively, trans_gref is grant entry transitive reference of
-        * domain B.
-        */
-       void (*update_trans_entry)(grant_ref_t ref, domid_t domid, int flags,
-                                  domid_t trans_domid, grant_ref_t trans_gref);
 };
 
 struct unmap_refs_callback_data {
 }
 EXPORT_SYMBOL_GPL(gnttab_grant_foreign_access);
 
-static void gnttab_update_subpage_entry_v2(grant_ref_t ref, domid_t domid,
-                                          unsigned long frame, int flags,
-                                          unsigned page_off, unsigned length)
-{
-       gnttab_shared.v2[ref].sub_page.frame = frame;
-       gnttab_shared.v2[ref].sub_page.page_off = page_off;
-       gnttab_shared.v2[ref].sub_page.length = length;
-       gnttab_shared.v2[ref].hdr.domid = domid;
-       wmb();
-       gnttab_shared.v2[ref].hdr.flags =
-                               GTF_permit_access | GTF_sub_page | flags;
-}
-
-int gnttab_grant_foreign_access_subpage_ref(grant_ref_t ref, domid_t domid,
-                                           unsigned long frame, int flags,
-                                           unsigned page_off,
-                                           unsigned length)
-{
-       if (flags & (GTF_accept_transfer | GTF_reading |
-                    GTF_writing | GTF_transitive))
-               return -EPERM;
-
-       if (gnttab_interface->update_subpage_entry == NULL)
-               return -ENOSYS;
-
-       gnttab_interface->update_subpage_entry(ref, domid, frame, flags,
-                                              page_off, length);
-
-       return 0;
-}
-EXPORT_SYMBOL_GPL(gnttab_grant_foreign_access_subpage_ref);
-
-int gnttab_grant_foreign_access_subpage(domid_t domid, unsigned long frame,
-                                       int flags, unsigned page_off,
-                                       unsigned length)
-{
-       int ref, rc;
-
-       ref = get_free_entries(1);
-       if (unlikely(ref < 0))
-               return -ENOSPC;
-
-       rc = gnttab_grant_foreign_access_subpage_ref(ref, domid, frame, flags,
-                                                    page_off, length);
-       if (rc < 0) {
-               put_free_entry(ref);
-               return rc;
-       }
-
-       return ref;
-}
-EXPORT_SYMBOL_GPL(gnttab_grant_foreign_access_subpage);
-
-bool gnttab_subpage_grants_available(void)
-{
-       return gnttab_interface->update_subpage_entry != NULL;
-}
-EXPORT_SYMBOL_GPL(gnttab_subpage_grants_available);
-
-static void gnttab_update_trans_entry_v2(grant_ref_t ref, domid_t domid,
-                                        int flags, domid_t trans_domid,
-                                        grant_ref_t trans_gref)
-{
-       gnttab_shared.v2[ref].transitive.trans_domid = trans_domid;
-       gnttab_shared.v2[ref].transitive.gref = trans_gref;
-       gnttab_shared.v2[ref].hdr.domid = domid;
-       wmb();
-       gnttab_shared.v2[ref].hdr.flags =
-                               GTF_permit_access | GTF_transitive | flags;
-}
-
-int gnttab_grant_foreign_access_trans_ref(grant_ref_t ref, domid_t domid,
-                                         int flags, domid_t trans_domid,
-                                         grant_ref_t trans_gref)
-{
-       if (flags & (GTF_accept_transfer | GTF_reading |
-                    GTF_writing | GTF_sub_page))
-               return -EPERM;
-
-       if (gnttab_interface->update_trans_entry == NULL)
-               return -ENOSYS;
-
-       gnttab_interface->update_trans_entry(ref, domid, flags, trans_domid,
-                                            trans_gref);
-
-       return 0;
-}
-EXPORT_SYMBOL_GPL(gnttab_grant_foreign_access_trans_ref);
-
-int gnttab_grant_foreign_access_trans(domid_t domid, int flags,
-                                     domid_t trans_domid,
-                                     grant_ref_t trans_gref)
-{
-       int ref, rc;
-
-       ref = get_free_entries(1);
-       if (unlikely(ref < 0))
-               return -ENOSPC;
-
-       rc = gnttab_grant_foreign_access_trans_ref(ref, domid, flags,
-                                                  trans_domid, trans_gref);
-       if (rc < 0) {
-               put_free_entry(ref);
-               return rc;
-       }
-
-       return ref;
-}
-EXPORT_SYMBOL_GPL(gnttab_grant_foreign_access_trans);
-
-bool gnttab_trans_grants_available(void)
-{
-       return gnttab_interface->update_trans_entry != NULL;
-}
-EXPORT_SYMBOL_GPL(gnttab_trans_grants_available);
-
 static int gnttab_query_foreign_access_v1(grant_ref_t ref)
 {
        return gnttab_shared.v1[ref].flags & (GTF_reading|GTF_writing);
        .end_foreign_access_ref         = gnttab_end_foreign_access_ref_v2,
        .end_foreign_transfer_ref       = gnttab_end_foreign_transfer_ref_v2,
        .query_foreign_access           = gnttab_query_foreign_access_v2,
-       .update_subpage_entry           = gnttab_update_subpage_entry_v2,
-       .update_trans_entry             = gnttab_update_trans_entry_v2,
 };
 
 static void gnttab_request_version(void)
                grefs_per_grant_frame = XEN_PAGE_SIZE /
                                        sizeof(union grant_entry_v2);
                gnttab_interface = &gnttab_v2_ops;
-       } else if (grant_table_version == 2) {
-               /*
-                * If we've already used version 2 features,
-                * but then suddenly discover that they're not
-                * available (e.g. migrating to an older
-                * version of Xen), almost unbounded badness
-                * can happen.
-                */
-               panic("we need grant tables version 2, but only version 1 is available");
        } else {
                grant_table_version = 1;
                grefs_per_grant_frame = XEN_PAGE_SIZE /
 
 
 int gnttab_grant_foreign_access(domid_t domid, unsigned long frame,
                                int readonly);
-int gnttab_grant_foreign_access_subpage(domid_t domid, unsigned long frame,
-                                       int flags, unsigned page_off,
-                                       unsigned length);
-int gnttab_grant_foreign_access_trans(domid_t domid, int flags,
-                                     domid_t trans_domid,
-                                     grant_ref_t trans_gref);
-
-/*
- * Are sub-page grants available on this version of Xen?  Returns true if they
- * are, and false if they're not.
- */
-bool gnttab_subpage_grants_available(void);
-
-/*
- * Are transitive grants available on this version of Xen?  Returns true if they
- * are, and false if they're not.
- */
-bool gnttab_trans_grants_available(void);
 
 /*
  * End access through the given grant reference, iff the grant entry is no
 
 void gnttab_grant_foreign_access_ref(grant_ref_t ref, domid_t domid,
                                     unsigned long frame, int readonly);
-int gnttab_grant_foreign_access_subpage_ref(grant_ref_t ref, domid_t domid,
-                                           unsigned long frame, int flags,
-                                           unsigned page_off,
-                                           unsigned length);
-int gnttab_grant_foreign_access_trans_ref(grant_ref_t ref, domid_t domid,
-                                         int flags, domid_t trans_domid,
-                                         grant_ref_t trans_gref);
 
 /* Give access to the first 4K of the page */
 static inline void gnttab_page_grant_foreign_access_ref_one(