mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
ia64: Fixes after changes to grant table code.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
This commit is contained in:
1 parent
bfc097127d
commit
c2db4fa33d
2 files changed
+35
-16
No files matched your search
@@ -521,6 +521,16 @@ int arch_domain_create(struct domain *d)
|
||||
if ((d->arch.mm.pgd = pgd_alloc(&d->arch.mm)) == NULL)
|
||||
goto fail_nomem;
|
||||
|
||||
/*
|
||||
* grant_table_create() can't fully initialize grant table for domain
|
||||
* because it is called before arch_domain_create().
|
||||
* Here we complete the initialization which requires p2m table.
|
||||
*/
|
||||
spin_lock(&d->grant_table->lock);
|
||||
for (i = 0; i < nr_grant_frames(d->grant_table); i++)
|
||||
ia64_gnttab_create_shared_page(d, d->grant_table, i);
|
||||
spin_unlock(&d->grant_table->lock);
|
||||
|
||||
d->arch.ioport_caps = rangeset_new(d, "I/O Ports",
|
||||
RANGESETF_prettyprint_hex);
|
||||
|
||||
|
||||
@@ -14,15 +14,6 @@ int destroy_grant_host_mapping(unsigned long gpaddr, unsigned long mfn, unsigned
|
||||
// for grant transfer
|
||||
void guest_physmap_add_page(struct domain *d, unsigned long gpfn, unsigned long mfn);
|
||||
|
||||
// for grant table shared page
|
||||
#define gnttab_create_shared_page(d, t, i) \
|
||||
do { \
|
||||
share_xen_page_with_guest( \
|
||||
virt_to_page((char *)(t)->shared + ((i) << PAGE_SHIFT)), \
|
||||
(d), XENSHARE_writable); \
|
||||
} while (0)
|
||||
|
||||
|
||||
/* XXX
|
||||
* somewhere appropriate
|
||||
* those constand shouldn't be pre-defined and
|
||||
@@ -39,14 +30,32 @@ void guest_physmap_add_page(struct domain *d, unsigned long gpfn, unsigned long
|
||||
/* Guest physical address of the grant table. */
|
||||
#define IA64_GRANT_TABLE_PADDR IA64_XMAPPEDREGS_PADDR(NR_CPUS)
|
||||
|
||||
#define gnttab_shared_maddr(d, t, i) \
|
||||
virt_to_maddr((char*)(t)->shared + ((i) << PAGE_SHIFT))
|
||||
#define gnttab_shared_maddr(t, i) (virt_to_maddr((t)->shared[(i)]))
|
||||
#define gnttab_shared_page(t, i) (virt_to_page((t)->shared[(i)]))
|
||||
|
||||
# define gnttab_shared_gmfn(d, t, i) \
|
||||
({ assign_domain_page((d), \
|
||||
IA64_GRANT_TABLE_PADDR + ((i) << PAGE_SHIFT), \
|
||||
gnttab_shared_maddr((d), (t), (i))); \
|
||||
(IA64_GRANT_TABLE_PADDR >> PAGE_SHIFT) + (i);})
|
||||
#define ia64_gnttab_create_shared_page(d, t, i) \
|
||||
do { \
|
||||
BUG_ON((d)->arch.mm.pgd == NULL); \
|
||||
assign_domain_page((d), \
|
||||
IA64_GRANT_TABLE_PADDR + ((i) << PAGE_SHIFT), \
|
||||
gnttab_shared_maddr((t), (i))); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* for grant table shared page
|
||||
* grant_table_create() might call this macro before allocating the p2m table.
|
||||
* In such case, arch_domain_create() completes the initialization.
|
||||
*/
|
||||
#define gnttab_create_shared_page(d, t, i) \
|
||||
do { \
|
||||
share_xen_page_with_guest(gnttab_shared_page((t), (i)), \
|
||||
(d), XENSHARE_writable); \
|
||||
if ((d)->arch.mm.pgd) \
|
||||
ia64_gnttab_create_shared_page((d), (t), (i)); \
|
||||
} while (0)
|
||||
|
||||
#define gnttab_shared_gmfn(d, t, i) \
|
||||
((IA64_GRANT_TABLE_PADDR >> PAGE_SHIFT) + (i))
|
||||
|
||||
#define gnttab_mark_dirty(d, f) ((void)f)
|
||||
|
||||
|
||||