Comments (2)
This sounds like a great use case for Bareflank as this is exactly the kind of thing this hypervisor was built for.
Since we currently don't have support for moving a VMCS from one core to another, pinning a VMCS to a core works today. The challenge is #2 as we don't have the ability in their today, to create more than one VMCS for a core. That being said, I don't think it would take a lot of work to do this. Besides the fact that Bareflank is still in heavy development (so a lot of features are still missing), Bareflank itself is, and always will be geared towards providing the scaffolding for creating a hypervisor for research, specifically so that you don't inherit baggage (which is exactly the case your describing). That however means that when you want to test out and idea, you might have to write a bit of code to get things working.
Testing out your idea with Bareflank should be pretty simple, but we'll need to figure out how to launch a VMCS tied to a specific process. Right now, you can IOCTL from a userspace process to start a VMCS, but the code is setup right now to prevent you from doing this twice, so you would simply need to add the logic to launch the second one, and swap based on the tests your trying to run.
If your interested in trying this out, I would start by looking at BFM, as it's the userspace app that does the IOCTL, and you could probably just use this as is, but keep it running so that you can swap from one VMCS to another. It would be dirty.. but it would be enough to test your theory. The VPID and trapping on CR3 should be pretty trivial with Bareflank (just look at the examples).
Let me know what you need from us. Besides the fact that this would be an awesome win for Bareflank to show how it can be used for this type of work, it's also a topic that I find very interesting. 😄
from hypervisor_example_vpid.
FYI, still working on the global flag and getting rid of the page fault. Once I get a free minute that is 😄 . I'll post my results as a repo on my personal page so that you can play around if you want. @tklengyel
from hypervisor_example_vpid.
Related Issues (1)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hypervisor_example_vpid.