Lines Matching refs:nk
267 fastboot_vatoindex(fastboot_info_t *nk, uintptr_t va, int level) in fastboot_vatoindex() argument
269 return ((va >> nk->fi_shift_amt[level]) & (nk->fi_ptes_per_table - 1)); in fastboot_vatoindex()
278 fastboot_map_with_size(fastboot_info_t *nk, uintptr_t vstart, paddr_t pstart, in fastboot_map_with_size() argument
286 table = (x86pte_t *)(nk->fi_pagetable_va); in fastboot_map_with_size()
288 for (l = nk->fi_top_level; l >= level; l--) { in fastboot_map_with_size()
290 index = fastboot_vatoindex(nk, vstart, l); in fastboot_map_with_size()
298 vaddr += (1ULL << nk->fi_shift_amt[l]), in fastboot_map_with_size()
299 paddr += (1ULL << nk->fi_shift_amt[l])) { in fastboot_map_with_size()
301 uint_t index = fastboot_vatoindex(nk, vaddr, l); in fastboot_map_with_size()
314 - nk->fi_pagetable_pa) + nk->fi_pagetable_va); in fastboot_map_with_size()
320 if (l == nk->fi_top_level) { in fastboot_map_with_size()
321 ASSERT(nk->fi_top_level == 3); in fastboot_map_with_size()
322 table[index] = nk->fi_next_table_pa | ptp_bits; in fastboot_map_with_size()
324 table[index] = nk->fi_next_table_pa | ptp_bits; in fastboot_map_with_size()
326 table = (x86pte_t *)(nk->fi_next_table_va); in fastboot_map_with_size()
327 nk->fi_next_table_va += MMU_PAGESIZE; in fastboot_map_with_size()
328 nk->fi_next_table_pa += MMU_PAGESIZE; in fastboot_map_with_size()
339 fastboot_build_pagetables(fastboot_info_t *nk) in fastboot_build_pagetables() argument
344 fastboot_map_with_size(nk, 0, 0, ONE_GIG, 1); in fastboot_build_pagetables()
349 fake_va = P2ALIGN_TYPED(fake_va, nk->fi_lpagesize, uintptr_t); in fastboot_build_pagetables()
350 fastboot_map_with_size(nk, fake_va, in fastboot_build_pagetables()
351 nk->fi_files[0].fb_pte_list_va[0] & MMU_PAGEMASK, PAGESIZE, 0); in fastboot_build_pagetables()
455 fastboot_build_mbi(char *mdep, fastboot_info_t *nk) in fastboot_build_mbi() argument
484 if (nk->fi_mbi_size && nk->fi_mbi_size < size) { in fastboot_build_mbi()
485 contig_free((void *)nk->fi_new_mbi_va, nk->fi_mbi_size); in fastboot_build_mbi()
486 nk->fi_mbi_size = 0; in fastboot_build_mbi()
489 if (nk->fi_mbi_size == 0) { in fastboot_build_mbi()
490 if ((nk->fi_new_mbi_va = in fastboot_build_mbi()
501 nk->fi_mbi_size = size; in fastboot_build_mbi()
507 bzero((void *)nk->fi_new_mbi_va, nk->fi_mbi_size); in fastboot_build_mbi()
512 start_addr_va = nk->fi_new_mbi_va; in fastboot_build_mbi()
515 nk->fi_new_mbi_pa = (paddr_t)start_addr_pa; in fastboot_build_mbi()
535 mbp->mod_start = nk->fi_files[FASTBOOT_BOOTARCHIVE].fb_dest_pa; in fastboot_build_mbi()
536 mbp->mod_end = nk->fi_files[FASTBOOT_BOOTARCHIVE].fb_next_pa; in fastboot_build_mbi()
593 fastboot_init_fields(fastboot_info_t *nk) in fastboot_init_fields() argument
596 nk->fi_has_pae = 1; in fastboot_init_fields()
597 nk->fi_shift_amt = fastboot_shift_amt_pae; in fastboot_init_fields()
598 nk->fi_ptes_per_table = 512; in fastboot_init_fields()
599 nk->fi_lpagesize = (2 << 20); /* 2M */ in fastboot_init_fields()
600 nk->fi_top_level = 3; in fastboot_init_fields()
664 fastboot_reserve_mem(fastboot_info_t *nk) in fastboot_reserve_mem() argument
671 if (nk->fi_valid) in fastboot_reserve_mem()
678 fastboot_file_t *fb = &nk->fi_files[i]; in fastboot_reserve_mem()
694 if ((nk->fi_pagetable_va = in fastboot_reserve_mem()
699 nk->fi_pagetable_size = fastboot_pagetable_size; in fastboot_reserve_mem()
704 if ((nk->fi_new_mbi_va = (uintptr_t)contig_alloc(fastboot_mbi_size, in fastboot_reserve_mem()
708 nk->fi_mbi_size = fastboot_mbi_size; in fastboot_reserve_mem()
760 fastboot_free_mem(fastboot_info_t *nk, uint64_t endaddr) in fastboot_free_mem() argument
765 fastboot_free_file(nk->fi_files + i); in fastboot_free_mem()
766 fastboot_free_file_pte(nk->fi_files + i, endaddr); in fastboot_free_mem()
769 if (nk->fi_pagetable_size && nk->fi_pagetable_pa < endaddr) { in fastboot_free_mem()
770 contig_free((void *)nk->fi_pagetable_va, nk->fi_pagetable_size); in fastboot_free_mem()
771 nk->fi_pagetable_va = 0; in fastboot_free_mem()
772 nk->fi_pagetable_pa = 0; in fastboot_free_mem()
773 nk->fi_pagetable_size = 0; in fastboot_free_mem()
776 if (nk->fi_mbi_size && nk->fi_new_mbi_pa < endaddr) { in fastboot_free_mem()
777 contig_free((void *)nk->fi_new_mbi_va, nk->fi_mbi_size); in fastboot_free_mem()
778 nk->fi_new_mbi_va = 0; in fastboot_free_mem()
779 nk->fi_new_mbi_pa = 0; in fastboot_free_mem()
780 nk->fi_mbi_size = 0; in fastboot_free_mem()
789 fastboot_free_newkernel(fastboot_info_t *nk) in fastboot_free_newkernel() argument
793 nk->fi_valid = 0; in fastboot_free_newkernel()
798 fastboot_free_file(&(nk->fi_files[i])); in fastboot_free_newkernel()
803 fastboot_cksum_cdata(fastboot_info_t *nk, uchar_t *md5_hash) in fastboot_cksum_cdata() argument
810 MD5Update(&md5_ctx, nk->fi_files[i].fb_pte_list_va, in fastboot_cksum_cdata()
811 nk->fi_files[i].fb_pte_list_size); in fastboot_cksum_cdata()
813 MD5Update(&md5_ctx, (void *)nk->fi_pagetable_va, nk->fi_pagetable_size); in fastboot_cksum_cdata()
814 MD5Update(&md5_ctx, (void *)nk->fi_new_mbi_va, nk->fi_mbi_size); in fastboot_cksum_cdata()
823 fastboot_cksum_generate(fastboot_info_t *nk) in fastboot_cksum_generate() argument
828 fastboot_cksum_file(nk->fi_files + i, nk->fi_md5_hash[i]); in fastboot_cksum_generate()
830 fastboot_cksum_cdata(nk, nk->fi_md5_hash[i]); in fastboot_cksum_generate()
838 fastboot_cksum_verify(fastboot_info_t *nk) in fastboot_cksum_verify() argument
844 fastboot_cksum_file(nk->fi_files + i, md5_hash); in fastboot_cksum_verify()
845 if (bcmp(nk->fi_md5_hash[i], md5_hash, in fastboot_cksum_verify()
846 sizeof (nk->fi_md5_hash[i])) != 0) in fastboot_cksum_verify()
850 fastboot_cksum_cdata(nk, md5_hash); in fastboot_cksum_verify()
851 if (bcmp(nk->fi_md5_hash[i], md5_hash, in fastboot_cksum_verify()
852 sizeof (nk->fi_md5_hash[i])) != 0) in fastboot_cksum_verify()
1282 fastboot_info_t *nk = (fastboot_info_t *)arg1; in fastboot_xc_func() local
1284 fastboot_file_t *fb = &nk->fi_files[FASTBOOT_SWTCH]; in fastboot_xc_func()
1307 (*fastboot_func)(nk); in fastboot_xc_func()