A little teaser of what is to come :)

This is the last puzzle we had to solve, in Linux windows vm and native performance thank you for your work. This changes EVERYTHING.

1 Like

@gnif Wow, this is an amazing project. I can’t wait to see it in action on my own machine. Say, you are using two discrete GPUs, right? Can you make a guess if this will run tear-free with Intel HD Graphics?

@bsodmike, no worries :slight_smile:

Actually it’s not that involved, this though is my first accepted kernel contribution, most work I have performed in the past has been on projects such as Kodi (I headed up AudioEngine development there).

It depends on the scale of the project, for larger things like Kodi where there is a team of 10-20 developers a ton of chat in IRC, forum postings, etc… but to get started just find something to fix and fix it, if you’ve done it wrong when you show it you will be told what and why.

Commits (aka, patches) to a project should be kept specific, for example, you fix a problem and while fixing it you cant help yourself but notice some code formatting problems and fix them too. This will often get rejected, cosmetic changes need to be isolated from functional changes in their own commit.

Also huge commits are usually rejected also, you should limit your changes to chunks that fix/change certain things leading to a greater goal. This way anyone reviewing your code can see the set of changes and how they interact easily, and what your intention is with the changes.

Good concise short comment on the commit as to what it does, and then if the change is complicated to understand, or needs some additional information, be sure to detail it after your commit title.

You should know your way around git, and if you are working on a set of changes, don’t be afraid to fork the project and push your changes in there. You can then later ask someone else to review/test your code tree before you submit it for final review and inclusion.

For small projects, work like this anyway… use git, leave comments for other devs, even if you’re the only one. This way if you do end up working with someone else they have a history of what changes were made and why, it is extremely important.

With a project like the kernel, depends on what you’re working on, in my instance it was a kernel object (*.ko), which can be unloaded and reloaded at runtime without rebooting. Each iteration was just a simple make && rmmod the-module && insmod /path/to/new/the-module.ko. Because I was working in git, each set of changes I made was easy to isolate and when it came time to distill the changes down to isolate the exact one it was relatively easy.

There is likely much much more I can say, but honestly the best way is to just get involved, look for others that worked on what you’re working on and don’t worry about sending them an email to ask for advice.

Edit: Oh, and very important, adopt the project’s code style even if you don’t agree with it.

4 Likes

I’ve done of lot of kernel bisecting when chasing down bugs in OpenWRT/LEDE.

A lot of it depends on your reputation as a developer and the complexity of the patch, at the end of the day all they need is a commit that has a signed off by, that has context sent via email to the right mailing list, in pretty much the same format as git format-patch or git mail.

A couple of people will have a look and comment on it, and you’re done.

You can browse lkml for examples, and you can find some basic instructions on kernel.org.

In the early development there’s nothing stopping you from forking Linus-es kernel on GitHub and publishing your work there, although several rebases are inevitable.

Will have to add the obligatory warning that Valve is now outlawing virtualization for VAC protected games, so CS:GO will not be usable in a VM cause you will be VAC banned.

5 Likes

Thanks! And yes, documentation will be coming too once the code stabilizes and we actually have a name for the project :smiley:

1 Like

It should be, I don’t have a platform with Intel HD I can verify this on though. The client application that runs on the host uses SDL, so provided that SDL double buffering works fine, or your card implements OpenGL 4.3 or later, it should be possible.

Boo! Thanks for the heads up.

As for name, the premise of this is very similar to the Lucid Hydra chip that never got off the ground, so maybe a homage to that name?

Not so keen on Hydra, makes me think of Avengers… But Lucid.

Btw, we are going to put the final name up for a vote from a shortlist, this after all is an open source project, the name should be too :smiley:

3 Likes

I am running an i7-6700K with Intel HD 530 so it should support OpenGL 4.4. The discrete GPU is a GTX 1070. When you need it I can assist you testing this scenario. Would be happy to contribute to your great work.

Hey, I’m generally a lurker here in the forums, but got really interested in the project and I have a question.

What about the audio? I’ve found that my biggest issue with VFIO is that audio is completely trash. Latency, quality, it doesn’t work at all and it’s completely unusable.

Are you also dealing with the audio issues, or is the focus just on the graphics side?

1 Like

For now only graphical, it would be nice to cover audio too but that’s another whole can of worms in itself.

2 Likes

So how does audio work with gaming in say a Windows VM?

Alternatively, say you have a USB ‘audio hub’ and you pass this from the host to the Windows VM, any audio played from inside the VM would play through the passed USB hub right?

There is work going into PulseAudio in the VFIO subreddit that already proves good enough for most general purpose usage, but anyone looking for extreme low latency for professional work should be passing a physical PCI or USB device into the guest.

1 Like

In fact someone already took over this. Take a look:

1 Like

http://www.mellanox.com/page/products_dyn?product_family=79

Now that’s pretty sick. You know how in 24, they keep talking about “Give me a socket” and magically someone’s desktop is ‘transferred’… this would so do that.

1 Like

Its just amzing to see talented developers putting work in this niche technology. From GPU passthrough not really being a thing to a point where we have pushbutton GUIs and even hardware vendors care in just two years or so, considering our relativly small userbase. This is the single thing that finally converted me to Linux. The former dual boot option never cut it.

@gnif: Don’t have that much to offer, but is there some way to hand you a few bucks via paypal? Gofundme seems to only allow credit cards and I don’t have one.

4 Likes

This is because companies are finally starting to see how valuable it is to open up their IP to allow us to really use it. Look at AMD with their completely open VGA stack, it truly is astonishing!

Thanks mate, the account to use is [email protected], let me know if you want the amount made public or remain anonymous so I can add you to the contributors on gofundme.

Edit: I screwed up, that paypal account was wrong, its [email protected]

2 Likes

I was also curious about a Qemu/kvm style workflow - this seems interesting, I will deffo have a play with it…

This way, your development ‘host’ isn’t messed with and you can kill/spawn VMs as needed.

1 Like