如何在KVM中将访客页面固定在内存中?

时间:2015-12-06 08:01:05

标签: memory-management linux-kernel virtualization qemu kvm

我在做KVM内存。我注意到有时会调用kvm_unmap_hva_range(),然后调用drop_stpe()然后调用drop_spte(),这会将某个spte设置为零。我想在QEMU中从HVA到PFN的映射发生了变化,所以它需要使那些指向那些PFN的sptes无效,对吧? 我为spte做了一些CoW机制,所以public Throwable processError(RetrofitError cause) { Response r = cause.getResponse(); if (r != null) { BufferedReader br = null; StringBuilder sb = new StringBuilder(); String line; try { br = new BufferedReader(new InputStreamReader(r.getBody().in())); while ((line = br.readLine()) != null) { sb.append(line); } } catch (IOException e) { Log.e(TAG, "IOException", e); } finally { if (br != null) { try { br.close(); } catch (IOException e) { Log.e(TAG, "IOException", e); } } } if (r.getStatus() == 401) { Log.e(TAG, "401 Unauthorized Exception..."); } else if (r.getStatus() == 500) { Log.e(TAG, "500 Server Error..."); } Log.e(TAG, sb.toString()); } return cause; } 使得它很难工作。我可以将页面固定在内存中,以便从HVA到PFN的映射不会改变吗?我想在一个访客页面上张贴一个页面,这样就不会意外删除它 非常感谢!

1 个答案:

答案 0 :(得分:1)

我猜kvm_get_pfn()可用于固定pfn。您可以使用gfn_to_pfn()来获取与gfn相对应的pfn。要取消固定页面,您可以使用kvm_release_pfn_clean()。