| 901 | } |
| 902 | |
| 903 | static void |
| 904 | invlpg_invpcid_handler(pmap_t smp_tlb_pmap, vm_offset_t smp_tlb_addr1) |
| 905 | { |
| 906 | struct invpcid_descr d; |
| 907 | |
| 908 | #ifdef COUNT_XINVLTLB_HITS |
| 909 | xhits_pg[PCPU_GET(cpuid)]++; |
| 910 | #endif /* COUNT_XINVLTLB_HITS */ |
| 911 | #ifdef COUNT_IPIS |
| 912 | (*ipi_invlpg_counts[PCPU_GET(cpuid)])++; |
| 913 | #endif /* COUNT_IPIS */ |
| 914 | |
| 915 | invlpg(smp_tlb_addr1); |
| 916 | if (smp_tlb_pmap == PCPU_GET(curpmap) && |
| 917 | smp_tlb_pmap->pm_ucr3 != PMAP_NO_CR3 && |
| 918 | PCPU_GET(ucr3_load_mask) == PMAP_UCR3_NOMASK) { |
| 919 | d.pcid = smp_tlb_pmap->pm_pcids[PCPU_GET(cpuid)].pm_pcid | |
| 920 | PMAP_PCID_USER_PT; |
| 921 | d.pad = 0; |
| 922 | d.addr = smp_tlb_addr1; |
| 923 | invpcid(&d, INVPCID_ADDR); |
| 924 | } |
| 925 | } |
| 926 | |
| 927 | static void |
| 928 | invlpg_pcid_handler(pmap_t smp_tlb_pmap, vm_offset_t smp_tlb_addr1) |
no test coverage detected