From f6a0c81919eb622cfebfe0d843de3d27e644dd60 Mon Sep 17 00:00:00 2001 From: Johannes Hofmann Date: Tue, 30 Jul 2013 08:12:34 +0200 Subject: [PATCH] kernel: add OBJT_MGTDEVICE in some more places --- sys/platform/pc32/i386/pmap.c | 3 ++- sys/platform/pc64/x86_64/pmap.c | 3 ++- sys/platform/vkernel/platform/pmap.c | 3 ++- sys/vfs/procfs/procfs_map.c | 4 ++++ sys/vm/vm_fault.c | 7 ++++--- sys/vm/vm_pager.c | 1 + 6 files changed, 15 insertions(+), 6 deletions(-) diff --git a/sys/platform/pc32/i386/pmap.c b/sys/platform/pc32/i386/pmap.c index b186aab870..05872fde05 100644 --- a/sys/platform/pc32/i386/pmap.c +++ b/sys/platform/pc32/i386/pmap.c @@ -3592,7 +3592,8 @@ vm_offset_t pmap_addr_hint(vm_object_t obj, vm_offset_t addr, vm_size_t size) { - if ((obj == NULL) || (size < NBPDR) || (obj->type != OBJT_DEVICE)) { + if ((obj == NULL) || (size < NBPDR) || + ((obj->type != OBJT_DEVICE) && (obj->type != OBJT_MGTDEVICE))) { return addr; } diff --git a/sys/platform/pc64/x86_64/pmap.c b/sys/platform/pc64/x86_64/pmap.c index 4726863d6d..cf5111f109 100644 --- a/sys/platform/pc64/x86_64/pmap.c +++ b/sys/platform/pc64/x86_64/pmap.c @@ -4737,7 +4737,8 @@ vm_offset_t pmap_addr_hint(vm_object_t obj, vm_offset_t addr, vm_size_t size) { - if ((obj == NULL) || (size < NBPDR) || (obj->type != OBJT_DEVICE)) { + if ((obj == NULL) || (size < NBPDR) || + ((obj->type != OBJT_DEVICE) && (obj->type != OBJT_MGTDEVICE))) { return addr; } diff --git a/sys/platform/vkernel/platform/pmap.c b/sys/platform/vkernel/platform/pmap.c index eb084b8ef5..f9fc7d6c90 100644 --- a/sys/platform/vkernel/platform/pmap.c +++ b/sys/platform/vkernel/platform/pmap.c @@ -3051,7 +3051,8 @@ vm_offset_t pmap_addr_hint(vm_object_t obj, vm_offset_t addr, vm_size_t size) { - if ((obj == NULL) || (size < NBPDR) || (obj->type != OBJT_DEVICE)) { + if ((obj == NULL) || (size < NBPDR) || + ((obj->type != OBJT_DEVICE) && (obj->type != OBJT_MGTDEVICE))) { return addr; } diff --git a/sys/vfs/procfs/procfs_map.c b/sys/vfs/procfs/procfs_map.c index ec4205829e..aa18b55bea 100644 --- a/sys/vfs/procfs/procfs_map.c +++ b/sys/vfs/procfs/procfs_map.c @@ -166,6 +166,10 @@ procfs_domap(struct proc *curp, struct lwp *lp, struct pfsnode *pfs, type = "device"; vp = NULL; break; + case OBJT_MGTDEVICE: + type = "mgtdevice"; + vp = NULL; + break; } flags = obj->flags; diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index 7f9256596e..b1e3598c22 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -1908,8 +1908,8 @@ vm_fault_wire(vm_map_t map, vm_map_entry_t entry, boolean_t user_wire) start = entry->start; end = entry->end; fictitious = entry->object.vm_object && - (entry->object.vm_object->type == OBJT_DEVICE || - entry->object.vm_object->type == OBJT_MGTDEVICE); + ((entry->object.vm_object->type == OBJT_DEVICE) || + (entry->object.vm_object->type == OBJT_MGTDEVICE)); if (entry->eflags & MAP_ENTRY_KSTACK) start += PAGE_SIZE; map->timestamp++; @@ -1971,7 +1971,8 @@ vm_fault_unwire(vm_map_t map, vm_map_entry_t entry) start = entry->start; end = entry->end; fictitious = entry->object.vm_object && - (entry->object.vm_object->type == OBJT_DEVICE); + ((entry->object.vm_object->type == OBJT_DEVICE) || + (entry->object.vm_object->type == OBJT_MGTDEVICE)); if (entry->eflags & MAP_ENTRY_KSTACK) start += PAGE_SIZE; diff --git a/sys/vm/vm_pager.c b/sys/vm/vm_pager.c index 4a921bc367..48e364c34f 100644 --- a/sys/vm/vm_pager.c +++ b/sys/vm/vm_pager.c @@ -155,6 +155,7 @@ struct pagerops *pagertab[] = { &swappagerops, /* OBJT_SWAP */ &vnodepagerops, /* OBJT_VNODE */ &devicepagerops, /* OBJT_DEVICE */ + &devicepagerops, /* OBJT_MGTDEVICE */ &physpagerops, /* OBJT_PHYS */ &deadpagerops /* OBJT_DEAD */ }; -- 2.41.0