Hi, Xiantao

>+void thash_vhpt_insert(VCPU *v, u64 pte, u64 itir, u64 va, int type)
>+{
>+      u64 phy_pte, psr;
>+      ia64_rr mrr;
>+
>+      mrr.val = ia64_get_rr(va);
>+      phy_pte = translate_phy_pte(&pte, itir, va);
>+
>+      if (itir_ps(itir) >= mrr.ps) {
>+              vhpt_insert(phy_pte, itir, va, pte);
>+      } else {
>+              phy_pte  &= ~PAGE_FLAGS_RV_MASK;
>+              psr = ia64_clear_ic();
>+              ia64_itc(type, va, phy_pte, itir_ps(itir));
>+              ia64_set_psr(psr);
>+              ia64_srlz_i();
>+      }
>+}
You add ia64_srlz_i() into ia64_set_psr() with [02]patch.
So is this a redundancy if the patch is applied?


>+ */
>+int thash_purge_and_insert(VCPU *v, u64 pte, u64 itir, u64 ifa, int
>type)
>+{
>+      u64 ps;
>+      u64 phy_pte;
>+      ia64_rr vrr, mrr;
>+      int ret = 0;
>+
>+      ps = itir_ps(itir);
>+      vrr.val = vcpu_get_rr(v, ifa);
>+      mrr.val = ia64_get_rr(ifa);
>+
>+      phy_pte = translate_phy_pte(&pte, itir, ifa);
>+
>+      /* Ensure WB attribute if pte is related to a normal mem page,
>+       * which is required by vga acceleration since qemu maps shared
>+       * vram buffer with WB.
>+       */
>+      if (!(pte & VTLB_PTE_IO) && ((pte & _PAGE_MA_MASK) !=
>_PAGE_MA_NAT)) {
>+              pte &= ~_PAGE_MA_MASK;
>+              phy_pte &= ~_PAGE_MA_MASK;
>+      }
>+
>+      if (pte & VTLB_PTE_IO)
>+              ret = 1;
>+
>+      vtlb_purge(v, ifa, ps);
>+      vhpt_purge(v, ifa, ps);
>+
>+      if (ps == mrr.ps) {
>+              if (!(pte&VTLB_PTE_IO)) {
>+                      vhpt_insert(phy_pte, itir, ifa, pte);
>+              } else {
>+                      vtlb_insert(v, pte, itir, ifa);
>+                      vcpu_quick_region_set(VMX(v, tc_regions), ifa);
>+              }
>+      } else if (ps > mrr.ps) {
>+              vtlb_insert(v, pte, itir, ifa);
>+              vcpu_quick_region_set(VMX(v, tc_regions), ifa);
>+              if (!(pte&VTLB_PTE_IO))
>+                      vhpt_insert(phy_pte, itir, ifa, pte);
>+      } else {
>+              u64 psr;
>+              phy_pte  &= ~PAGE_FLAGS_RV_MASK;
>+              psr = ia64_clear_ic();
>+              ia64_itc(type, ifa, phy_pte, ps);
>+              ia64_set_psr(psr);
>+              ia64_srlz_i();
>+      }
>+
>+      return ret;
>+}
ditto

Best Regards,

Akio Takebe


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to