Lines Matching refs:nk
271 fastboot_vatoindex(fastboot_info_t *nk, uintptr_t va, int level) in fastboot_vatoindex() argument
273 return ((va >> nk->fi_shift_amt[level]) & (nk->fi_ptes_per_table - 1)); in fastboot_vatoindex()
282 fastboot_map_with_size(fastboot_info_t *nk, uintptr_t vstart, paddr_t pstart, in fastboot_map_with_size() argument
290 table = (x86pte_t *)(nk->fi_pagetable_va); in fastboot_map_with_size()
292 for (l = nk->fi_top_level; l >= level; l--) { in fastboot_map_with_size()
294 index = fastboot_vatoindex(nk, vstart, l); in fastboot_map_with_size()
302 vaddr += (1ULL << nk->fi_shift_amt[l]), in fastboot_map_with_size()
303 paddr += (1ULL << nk->fi_shift_amt[l])) { in fastboot_map_with_size()
305 uint_t index = fastboot_vatoindex(nk, vaddr, l); in fastboot_map_with_size()
318 - nk->fi_pagetable_pa) + nk->fi_pagetable_va); in fastboot_map_with_size()
324 if (l == nk->fi_top_level) { in fastboot_map_with_size()
326 ASSERT(nk->fi_top_level == 3); in fastboot_map_with_size()
327 table[index] = nk->fi_next_table_pa | ptp_bits; in fastboot_map_with_size()
329 table[index] = nk->fi_next_table_pa | PT_VALID; in fastboot_map_with_size()
332 table[index] = nk->fi_next_table_pa | ptp_bits; in fastboot_map_with_size()
334 table = (x86pte_t *)(nk->fi_next_table_va); in fastboot_map_with_size()
335 nk->fi_next_table_va += MMU_PAGESIZE; in fastboot_map_with_size()
336 nk->fi_next_table_pa += MMU_PAGESIZE; in fastboot_map_with_size()
347 fastboot_build_pagetables(fastboot_info_t *nk) in fastboot_build_pagetables() argument
352 fastboot_map_with_size(nk, 0, 0, ONE_GIG, 1); in fastboot_build_pagetables()
357 fake_va = P2ALIGN_TYPED(fake_va, nk->fi_lpagesize, uintptr_t); in fastboot_build_pagetables()
358 fastboot_map_with_size(nk, fake_va, in fastboot_build_pagetables()
359 nk->fi_files[0].fb_pte_list_va[0] & MMU_PAGEMASK, PAGESIZE, 0); in fastboot_build_pagetables()
463 fastboot_build_mbi(char *mdep, fastboot_info_t *nk) in fastboot_build_mbi() argument
492 if (nk->fi_mbi_size && nk->fi_mbi_size < size) { in fastboot_build_mbi()
493 contig_free((void *)nk->fi_new_mbi_va, nk->fi_mbi_size); in fastboot_build_mbi()
494 nk->fi_mbi_size = 0; in fastboot_build_mbi()
497 if (nk->fi_mbi_size == 0) { in fastboot_build_mbi()
498 if ((nk->fi_new_mbi_va = in fastboot_build_mbi()
509 nk->fi_mbi_size = size; in fastboot_build_mbi()
515 bzero((void *)nk->fi_new_mbi_va, nk->fi_mbi_size); in fastboot_build_mbi()
520 start_addr_va = nk->fi_new_mbi_va; in fastboot_build_mbi()
523 nk->fi_new_mbi_pa = (paddr_t)start_addr_pa; in fastboot_build_mbi()
543 mbp->mod_start = nk->fi_files[FASTBOOT_BOOTARCHIVE].fb_dest_pa; in fastboot_build_mbi()
544 mbp->mod_end = nk->fi_files[FASTBOOT_BOOTARCHIVE].fb_next_pa; in fastboot_build_mbi()
601 fastboot_init_fields(fastboot_info_t *nk) in fastboot_init_fields() argument
604 nk->fi_has_pae = 1; in fastboot_init_fields()
605 nk->fi_shift_amt = fastboot_shift_amt_pae; in fastboot_init_fields()
606 nk->fi_ptes_per_table = 512; in fastboot_init_fields()
607 nk->fi_lpagesize = (2 << 20); /* 2M */ in fastboot_init_fields()
609 nk->fi_top_level = 3; in fastboot_init_fields()
611 nk->fi_top_level = 2; in fastboot_init_fields()
676 fastboot_reserve_mem(fastboot_info_t *nk) in fastboot_reserve_mem() argument
683 if (nk->fi_valid) in fastboot_reserve_mem()
690 fastboot_file_t *fb = &nk->fi_files[i]; in fastboot_reserve_mem()
706 if ((nk->fi_pagetable_va = in fastboot_reserve_mem()
711 nk->fi_pagetable_size = fastboot_pagetable_size; in fastboot_reserve_mem()
716 if ((nk->fi_new_mbi_va = (uintptr_t)contig_alloc(fastboot_mbi_size, in fastboot_reserve_mem()
720 nk->fi_mbi_size = fastboot_mbi_size; in fastboot_reserve_mem()
772 fastboot_free_mem(fastboot_info_t *nk, uint64_t endaddr) in fastboot_free_mem() argument
777 fastboot_free_file(nk->fi_files + i); in fastboot_free_mem()
778 fastboot_free_file_pte(nk->fi_files + i, endaddr); in fastboot_free_mem()
781 if (nk->fi_pagetable_size && nk->fi_pagetable_pa < endaddr) { in fastboot_free_mem()
782 contig_free((void *)nk->fi_pagetable_va, nk->fi_pagetable_size); in fastboot_free_mem()
783 nk->fi_pagetable_va = 0; in fastboot_free_mem()
784 nk->fi_pagetable_pa = 0; in fastboot_free_mem()
785 nk->fi_pagetable_size = 0; in fastboot_free_mem()
788 if (nk->fi_mbi_size && nk->fi_new_mbi_pa < endaddr) { in fastboot_free_mem()
789 contig_free((void *)nk->fi_new_mbi_va, nk->fi_mbi_size); in fastboot_free_mem()
790 nk->fi_new_mbi_va = 0; in fastboot_free_mem()
791 nk->fi_new_mbi_pa = 0; in fastboot_free_mem()
792 nk->fi_mbi_size = 0; in fastboot_free_mem()
801 fastboot_free_newkernel(fastboot_info_t *nk) in fastboot_free_newkernel() argument
805 nk->fi_valid = 0; in fastboot_free_newkernel()
810 fastboot_free_file(&(nk->fi_files[i])); in fastboot_free_newkernel()
815 fastboot_cksum_cdata(fastboot_info_t *nk, uchar_t *md5_hash) in fastboot_cksum_cdata() argument
822 MD5Update(&md5_ctx, nk->fi_files[i].fb_pte_list_va, in fastboot_cksum_cdata()
823 nk->fi_files[i].fb_pte_list_size); in fastboot_cksum_cdata()
825 MD5Update(&md5_ctx, (void *)nk->fi_pagetable_va, nk->fi_pagetable_size); in fastboot_cksum_cdata()
826 MD5Update(&md5_ctx, (void *)nk->fi_new_mbi_va, nk->fi_mbi_size); in fastboot_cksum_cdata()
835 fastboot_cksum_generate(fastboot_info_t *nk) in fastboot_cksum_generate() argument
840 fastboot_cksum_file(nk->fi_files + i, nk->fi_md5_hash[i]); in fastboot_cksum_generate()
842 fastboot_cksum_cdata(nk, nk->fi_md5_hash[i]); in fastboot_cksum_generate()
850 fastboot_cksum_verify(fastboot_info_t *nk) in fastboot_cksum_verify() argument
856 fastboot_cksum_file(nk->fi_files + i, md5_hash); in fastboot_cksum_verify()
857 if (bcmp(nk->fi_md5_hash[i], md5_hash, in fastboot_cksum_verify()
858 sizeof (nk->fi_md5_hash[i])) != 0) in fastboot_cksum_verify()
862 fastboot_cksum_cdata(nk, md5_hash); in fastboot_cksum_verify()
863 if (bcmp(nk->fi_md5_hash[i], md5_hash, in fastboot_cksum_verify()
864 sizeof (nk->fi_md5_hash[i])) != 0) in fastboot_cksum_verify()
1296 fastboot_xc_func(fastboot_info_t *nk, xc_arg_t unused2, xc_arg_t unused3) in fastboot_xc_func() argument
1299 fastboot_file_t *fb = &nk->fi_files[FASTBOOT_SWTCH]; in fastboot_xc_func()
1322 (*fastboot_func)(nk); in fastboot_xc_func()