/illumos-gate/usr/src/uts/common/vm/ |
H A D | hat.h | 63 struct hat; 132 struct hat *hat_alloc(struct as *); 133 void hat_free_start(struct hat *); 134 void hat_free_end(struct hat *); 135 int hat_dup(struct hat *, struct hat *, caddr_t, size_t, uint_t); 136 void hat_swapin(struct hat *); 137 void hat_swapout(struct hat *); 138 size_t hat_get_mapped_size(struct hat *); 139 int hat_stats_enable(struct hat *); 140 void hat_stats_disable(struct hat *); [all …]
|
H A D | seg_kpm.c | 103 faultcode_t segkpm_fault(struct hat *hat, struct seg *seg, caddr_t addr, 210 segkpm_fault(struct hat *hat, struct seg *seg, caddr_t addr, size_t len, in segkpm_fault() argument 217 return (hat_kpm_fault(hat, addr)); in segkpm_fault() 302 segkpm_fault(struct hat *hat, struct seg *seg, caddr_t addr, size_t len, in segkpm_fault() argument
|
H A D | seg_kp.c | 92 static int segkp_unlock(struct hat *hat, struct seg *seg, caddr_t vaddr, 94 static int segkp_load(struct hat *hat, struct seg *seg, caddr_t vaddr, 932 struct hat *hat, in segkp_fault() argument 971 if ((err = segkp_load(hat, seg, vaddr, len, kpd, KPD_LOCKED))) { in segkp_fault() 1003 err = segkp_load(hat, seg, vaddr, len, kpd, kpd->kp_flags); in segkp_fault() 1030 err = segkp_unlock(hat, seg, vaddr, len, kpd, flags); in segkp_fault() 1090 struct hat *hat, in segkp_load() argument 1147 (void) segkp_unlock(hat, seg, vaddr, in segkp_load() 1155 hat_memload(hat, va, pl[0], (PROT_READ|PROT_WRITE), in segkp_load() 1175 struct hat *hat, in segkp_unlock() argument [all …]
|
H A D | seg_kp.h | 154 faultcode_t segkp_fault(struct hat *hat, struct seg *seg, caddr_t addr,
|
H A D | seg_hole.c | 34 static faultcode_t seghole_fault(struct hat *, struct seg *, caddr_t, size_t, 160 seghole_fault(struct hat *hat, struct seg *seg, caddr_t addr, size_t len, in seghole_fault() argument
|
H A D | as.h | 112 struct hat *a_hat; /* hat structure */ 272 faultcode_t as_fault(struct hat *hat, struct as *as, caddr_t addr, size_t size,
|
H A D | seg_map.c | 75 faultcode_t segmap_fault(struct hat *hat, struct seg *seg, caddr_t addr, 133 static void segmap_unlock(struct hat *hat, struct seg *seg, caddr_t addr, 492 struct hat *hat, in segmap_unlock() argument 527 hat_unlock(hat, addr, P2ROUNDUP(len, PAGESIZE)); in segmap_unlock() 583 struct hat *hat, in segmap_fault() argument 699 segmap_unlock(hat, seg, addr, len, rw, smp); in segmap_fault() 739 ASSERT(hat == kas.a_hat); in segmap_fault() 764 hat_memload(hat, adr, pp, prot, hat_flag); in segmap_fault()
|
/illumos-gate/usr/src/uts/i86pc/vm/ |
H A D | hat_i86.c | 408 hat_t *hat = buf; in hati_constructor() local 410 mutex_init(&hat->hat_mutex, NULL, MUTEX_DEFAULT, NULL); in hati_constructor() 411 bzero(hat->hat_pages_mapped, in hati_constructor() 413 hat->hat_ism_pgcnt = 0; in hati_constructor() 414 hat->hat_stats = 0; in hati_constructor() 415 hat->hat_flags = 0; in hati_constructor() 416 CPUSET_ZERO(hat->hat_cpus); in hati_constructor() 417 hat->hat_htable = NULL; in hati_constructor() 418 hat->hat_ht_hash = NULL; in hati_constructor() 435 hat_list_append(hat_t *hat) in hat_list_append() argument [all …]
|
H A D | htable.c | 436 htable_steal_active(hat_t *hat, uint_t cnt, uint_t threshold, in htable_steal_active() argument 445 h = h_start = h_seed++ % hat->hat_num_hash; in htable_steal_active() 449 for (ht = hat->hat_ht_hash[h]; ht; ht = ht->ht_next) { in htable_steal_active() 511 ASSERT(hat->hat_ht_hash[h] == ht); in htable_steal_active() 512 hat->hat_ht_hash[h] = ht->ht_next; in htable_steal_active() 529 if (++h == hat->hat_num_hash) in htable_steal_active() 538 move_victim(hat_t *hat) in move_victim() argument 543 if (hat->hat_prev) in move_victim() 544 hat->hat_prev->hat_next = hat->hat_next; in move_victim() 546 kas.a_hat->hat_next = hat->hat_next; in move_victim() [all …]
|
H A D | htable.h | 70 struct hat *ht_hat; /* hat this mapping comes from */ 105 #define HTABLE_HASH(hat, va, lvl) \ argument 107 ((uintptr_t)(hat) >> 4)) & ((hat)->hat_num_hash - 1)) 120 struct hat *hci_user_hat; /* CPU specific HAT */ 181 extern htable_t *htable_lookup(struct hat *hat, uintptr_t vaddr, level_t level); 182 extern htable_t *htable_create(struct hat *hat, uintptr_t vaddr, level_t level, 193 extern void htable_purge_hat(struct hat *hat); 200 extern htable_t *htable_getpte(struct hat *, uintptr_t, uint_t *, x86pte_t *, 207 extern htable_t *htable_getpage(struct hat *hat, uintptr_t va, uint_t *entry); 224 extern size_t htable_mapped(struct hat *); [all …]
|
H A D | hat_i86.h | 89 struct hat { struct 100 struct hat *hat_next; argument 101 struct hat *hat_prev; argument 110 typedef struct hat hat_t; 112 #define PGCNT_INC(hat, level) \ argument 113 atomic_inc_ulong(&(hat)->hat_pages_mapped[level]); 114 #define PGCNT_DEC(hat, level) \ argument 115 atomic_dec_ulong(&(hat)->hat_pages_mapped[level]); 262 extern void hat_tlb_inval(struct hat *hat, uintptr_t va); 263 extern void hat_switch(struct hat *hat);
|
/illumos-gate/usr/src/uts/sun4u/cpu/ |
H A D | us3_common_mmu.c | 256 mmu_fixup_large_pages(struct hat *hat, uint64_t *ttecnt, uint8_t *tmp_pgsz) in mmu_fixup_large_pages() argument 265 ASSERT(hat->sfmmu_ismhat == 0); in mmu_fixup_large_pages() 266 ASSERT(hat != ksfmmup); in mmu_fixup_large_pages() 269 ASSERT(!SFMMU_TTEFLAGS_ISSET(hat, HAT_32M_FLAG) || in mmu_fixup_large_pages() 270 !SFMMU_TTEFLAGS_ISSET(hat, HAT_256M_FLAG)); in mmu_fixup_large_pages() 271 ASSERT(!SFMMU_TTEFLAGS_ISSET(hat, HAT_256M_FLAG) || in mmu_fixup_large_pages() 272 !SFMMU_TTEFLAGS_ISSET(hat, HAT_32M_FLAG)); in mmu_fixup_large_pages() 273 ASSERT(!SFMMU_FLAGS_ISSET(hat, HAT_32M_ISM) || in mmu_fixup_large_pages() 274 !SFMMU_FLAGS_ISSET(hat, HAT_256M_ISM)); in mmu_fixup_large_pages() 275 ASSERT(!SFMMU_FLAGS_ISSET(hat, HAT_256M_ISM) || in mmu_fixup_large_pages() [all …]
|
H A D | opl_olympus.c | 869 mmu_setup_page_sizes(struct hat *hat, uint64_t *ttecnt, uint8_t *tmp_pgsz) argument 876 ASSERT(hat->sfmmu_ismhat == NULL); 877 ASSERT(hat != ksfmmup); 918 mmu_set_ctx_page_sizes(struct hat *hat) argument 923 ASSERT(sfmmu_hat_lock_held(hat)); 927 if (hat->sfmmu_ismhat || hat == ksfmmup) 933 if (hat->sfmmu_scdp != NULL) { 934 new_cext = hat->sfmmu_scdp->scd_sfmmup->sfmmu_cext; 937 pgsz0 = hat->sfmmu_pgsz[0]; 938 pgsz1 = hat->sfmmu_pgsz[1]; [all …]
|
H A D | mach_cpu_module.c | 306 mmu_init_kernel_pgsz(struct hat *hat) in mmu_init_kernel_pgsz() argument
|
/illumos-gate/usr/src/cmd/mdb/i86pc/modules/unix/ |
H A D | i86mmu.c | 164 static struct hat *khat; /* value of kas.a_hat */ 519 get_pte(hat_t *hat, htable_t *htable, uintptr_t addr) in get_pte() argument 524 uintptr_t ptr = (uintptr_t)hat->hat_copied_ptes; in get_pte() 543 struct hat *hatp; in do_va2pa() 544 struct hat hat; in do_va2pa() local 567 if (mdb_vread(&hat, sizeof (hat), (uintptr_t)hatp) == -1) { in do_va2pa() 576 if (level == TOP_LEVEL(&hat)) in do_va2pa() 581 for (h = 0; h < hat.hat_num_hash; ++h) { in do_va2pa() 583 (uintptr_t)(hat.hat_ht_hash + h)) == -1) { in do_va2pa() 598 pte = get_pte(&hat, &htable, addr); in do_va2pa() [all …]
|
/illumos-gate/usr/src/uts/intel/io/vmm/ |
H A D | seg_vmm.c | 60 static faultcode_t segvmm_fault(struct hat *, struct seg *, caddr_t, size_t, 268 segvmm_fault_obj(struct hat *hat, struct seg *seg, uintptr_t va, size_t len) in segvmm_fault_obj() argument 289 hat_devload(hat, (caddr_t)va, PAGESIZE, pfn, uprot, HAT_LOAD); in segvmm_fault_obj() 298 segvmm_fault_space(struct hat *hat, struct seg *seg, uintptr_t va, size_t len) in segvmm_fault_space() argument 324 hat_devload(hat, (caddr_t)va, PAGESIZE, pfn, uprot, HAT_LOAD); in segvmm_fault_space() 332 hat_unload(hat, (caddr_t)va, PAGESIZE, HAT_UNLOAD); in segvmm_fault_space() 345 segvmm_fault(struct hat *hat, struct seg *seg, caddr_t addr, size_t len, in segvmm_fault() argument 373 err = segvmm_fault_obj(hat, seg, (uintptr_t)addr, len); in segvmm_fault() 375 err = segvmm_fault_space(hat, seg, (uintptr_t)addr, len); in segvmm_fault()
|
/illumos-gate/usr/src/uts/i86xpv/vm/ |
H A D | seg_mf.c | 223 segmf_faultpage(struct hat *hat, struct seg *seg, caddr_t addr, in segmf_faultpage() argument 259 hat_devload(hat, addr, MMU_PAGESIZE, (pfn_t)0, in segmf_faultpage() 277 hat_unload(hat, addr, MMU_PAGESIZE, hat_flags); in segmf_faultpage() 302 segmf_softunlock(struct hat *hat, struct seg *seg, caddr_t addr, size_t len) in segmf_softunlock() argument 306 hat_unlock(hat, addr, len); in segmf_softunlock() 328 segmf_fault_range(struct hat *hat, struct seg *seg, caddr_t addr, size_t len, in segmf_fault_range() argument 341 error = segmf_faultpage(hat, seg, a, type, data->prot); in segmf_fault_range() 353 segmf_softunlock(hat, seg, addr, done); in segmf_fault_range() 364 segmf_fault(struct hat *hat, struct seg *seg, caddr_t addr, size_t len, in segmf_fault() argument
|
/illumos-gate/usr/src/uts/sfmmu/vm/ |
H A D | hat_sfmmu.c | 91 #define SFMMU_VALIDATE_HMERID(hat, rid, saddr, len) \ argument 97 ASSERT(SF_RGNMAP_TEST(hat->sfmmu_hmeregion_map, rid)); \ 98 ASSERT((hat) != ksfmmup); \ 99 _srdp = (hat)->sfmmu_srdp; \ 146 #define SFMMU_VALIDATE_HMERID(hat, rid, addr, len) argument 398 static caddr_t sfmmu_hblk_unload(struct hat *, struct hme_blk *, caddr_t, 400 static caddr_t sfmmu_hblk_sync(struct hat *, struct hme_blk *, caddr_t, 411 static void hat_do_memload_array(struct hat *, caddr_t, size_t, 413 static void hat_do_memload(struct hat *, caddr_t, struct page *, 415 static void sfmmu_memload_batchsmall(struct hat *, caddr_t, page_t **, [all …]
|
/illumos-gate/usr/src/uts/sparc/os/ |
H A D | ddi_arch.c | 146 struct hat *hat, struct seg *seg, caddr_t addr, in i_ddi_map_fault() argument 158 rdip, hat, seg, addr, dp, pfn, prot, lock)); in i_ddi_map_fault()
|
/illumos-gate/usr/src/uts/common/os/ |
H A D | vm_subr.c | 343 struct hat *hat; in cow_mapin() local 374 hat = as->a_hat; in cow_mapin() 385 res = hat_softlock(hat, uaddr, &size, &ppp[0], cow ? HAT_COW : 0); in cow_mapin()
|
/illumos-gate/usr/src/uts/sun4/io/ |
H A D | rootnex.c | 63 struct hat *hat, struct seg *seg, caddr_t addr, 719 struct hat *hat, struct seg *seg, caddr_t addr, in rootnex_map_fault() argument 741 if (hat == NULL) { in rootnex_map_fault() 750 hat = seg->s_as->a_hat; in rootnex_map_fault() 753 hat_devload(hat, addr, MMU_PAGESIZE, pfn, prot | sdp->hat_attr, in rootnex_map_fault()
|
/illumos-gate/usr/src/uts/intel/os/ |
H A D | ddi_arch.c | 271 struct hat *hat, struct seg *seg, caddr_t addr, in i_ddi_map_fault() argument 283 rdip, hat, seg, addr, dp, pfn, prot, lock)); in i_ddi_map_fault()
|
/illumos-gate/usr/src/uts/common/sys/ |
H A D | devops.h | 201 struct hat *hat, struct seg *seg, caddr_t addr, 326 struct hat *hat, struct seg *seg, caddr_t addr,
|
H A D | ddi_implfuncs.h | 57 struct hat *hat, struct seg *seg, caddr_t addr,
|
/illumos-gate/usr/src/uts/sun4u/sys/ |
H A D | cpu_module.h | 258 void mmu_init_kernel_pgsz(struct hat *hat);
|