aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/xen/privcmd
diff options
context:
space:
mode:
authorRoger Pau Monné <royger@FreeBSD.org>2015-05-08 14:48:40 +0000
committerRoger Pau Monné <royger@FreeBSD.org>2015-05-08 14:48:40 +0000
commit0df8b29da31a6d0eee4f3b782d0fa3287afd36ec (patch)
tree0df19d243cf9c3b5b078907ca41718eadb489e8f /sys/dev/xen/privcmd
parent96b60db0d7d17034eebad2dd113615422ed3586c (diff)
Notes
Diffstat (limited to 'sys/dev/xen/privcmd')
-rw-r--r--sys/dev/xen/privcmd/privcmd.c26
1 files changed, 6 insertions, 20 deletions
diff --git a/sys/dev/xen/privcmd/privcmd.c b/sys/dev/xen/privcmd/privcmd.c
index 761fb037b163..0bf9585751a8 100644
--- a/sys/dev/xen/privcmd/privcmd.c
+++ b/sys/dev/xen/privcmd/privcmd.c
@@ -141,11 +141,8 @@ retry:
free(map->errs, M_PRIVCMD);
}
- vm_phys_fictitious_unreg_range(map->phys_base_addr,
- map->phys_base_addr + map->size * PAGE_SIZE);
-
- error = bus_release_resource(privcmd_dev, SYS_RES_MEMORY,
- map->pseudo_phys_res_id, map->pseudo_phys_res);
+ error = xenmem_free(privcmd_dev, map->pseudo_phys_res_id,
+ map->pseudo_phys_res);
KASSERT(error == 0, ("Unable to release memory resource: %d", error));
free(map, M_PRIVCMD);
@@ -196,36 +193,25 @@ privcmd_mmap_single(struct cdev *cdev, vm_ooffset_t *offset, vm_size_t size,
vm_object_t *object, int nprot)
{
struct privcmd_map *map;
- int error;
map = malloc(sizeof(*map), M_PRIVCMD, M_WAITOK | M_ZERO);
map->size = OFF_TO_IDX(size);
map->pseudo_phys_res_id = 0;
- map->pseudo_phys_res = bus_alloc_resource(privcmd_dev, SYS_RES_MEMORY,
- &map->pseudo_phys_res_id, 0, ~0, size, RF_ACTIVE);
+ map->pseudo_phys_res = xenmem_alloc(privcmd_dev,
+ &map->pseudo_phys_res_id, size);
if (map->pseudo_phys_res == NULL) {
free(map, M_PRIVCMD);
return (ENOMEM);
}
map->phys_base_addr = rman_get_start(map->pseudo_phys_res);
-
- error = vm_phys_fictitious_reg_range(map->phys_base_addr,
- map->phys_base_addr + size, VM_MEMATTR_DEFAULT);
- if (error) {
- bus_release_resource(privcmd_dev, SYS_RES_MEMORY,
- map->pseudo_phys_res_id, map->pseudo_phys_res);
- free(map, M_PRIVCMD);
- return (error);
- }
-
map->mem = cdev_pager_allocate(map, OBJT_MGTDEVICE, &privcmd_pg_ops,
size, nprot, *offset, NULL);
if (map->mem == NULL) {
- bus_release_resource(privcmd_dev, SYS_RES_MEMORY,
- map->pseudo_phys_res_id, map->pseudo_phys_res);
+ xenmem_free(privcmd_dev, map->pseudo_phys_res_id,
+ map->pseudo_phys_res);
free(map, M_PRIVCMD);
return (ENOMEM);
}