- Imagine a world where if
you wanted to occasionally run small business errands in your car, manufacturers could force you to buy their work grade vehicles. You'd be pretty pissed off, right? Well, that's essentially what Nvidia did. GeForce users who wanted
to pass their GPUs through to a Virtual Machine were suddenly greeted with the infamous Code 43 error when they tried to install drivers. And they've had to spend
the last seven years dealing with janky
workarounds, until today. Nvidia seems to have finally decided that it is time to make amends. So let's learn a bit
more and see if maybe, just maybe, Nvidia is
turning over a new leaf. What I'll never turn over is my segues to sponsors like Honey. Honey is the free to use
shopping tool that helps search for some of the best promo codes at lots of your favorite sites. Get it today. Join honey.com/ltt. (upbeat music) Code 43 has been a huge
deal in certain circles for a long time, in no small part because
of how ridiculous it is, because there's no technical reason why like most PCI Express devices, a GeForce card can't function just fine when passed through to a Virtual Machine, like in our 2 Gamers, 1 CPU project. And there's definitely
no reason why a Quadro which uses the exact same silicon and often the same board
layout would do it any better. And yet if the GeForce driver detected that it was running in
a virtual environment, it would effectively say to you, what Linus Torvalds
famously said to Nvidia. - So, Nvidia, you. - To understand why any
of this matters though we need to go back to the beginning. Virtualization has been
common on desktop computers since as far back as the nineties, when Connectix Virtual
PC allowed Mac users to use Windows on their
PowerPC based machines. Now back then everything
had to be emulated, so performance kind of sucked. But as technology improved and especially as hardware-assisted
virtualization support became common, more and more
of the host machines resources became available with very little overhead to a guest operating system
on a Virtual Machine or VM. That includes the ability
to assign a device entirely to the guest using
a feature called passthrough. Major players like VMware
and Microsoft with Hyper-V have supported these
features since very early on. And while hardware support
for passthrough began in 2007 with AMD's K10 family of CPU's, in 2008 with Intel's Wolfdale, Chipset and BIOS support from
motherboard manufacturers was sporadic on both sides. And it wasn't until AMD's
900 series chipsets in 2012, and Intel's Haswell Refresh in 2014, that consumer hardware
started really handling it. Well, AMD branded this feature AMD-Vi and Intel went with VT-d, but the technology is more commonly called input-output memory
management unit or IOMMU. And it is incredibly important
for Virtual Machines. Not only does IOMMU allow
pretty much any PCI device to be passed through to a VM, it can be used to sandbox faulty
or even malicious hardware without worrying about compromising
the rest of the system. This makes it useful, not only from a functionality standpoint, but also for security. Oh, and performance too. While devices like network
adapters and drive controllers could be emulated, passing through a dedicated card, could save that emulation overhead and allow a Virtual Machine
to have IO performance that was nearly on par
with a bare metal one. Over time, however, this last point has become less and less relevant. Thanks to the broad adoption
of paravirtualization. The ability for very fast virtual devices to communicate directly with the host without the need to emulate or pass a full device through. One network card for example,
can service multiple VMs with very little overhead. However, one somewhat important
piece of hardware still has no viable pair of
virtualization support. The GPU. And one group that heavily relied on GPU passthrough back then,
was the Linux community. It let them daily drive Linux and game in a virtual Windows environment with like bare metal performance. Perfect. That is until Nvidia's
337.88 driver release in May, 2014, just days
before Intel announced the pass through friendly Haswell Refresh. This was one of Nvidia's
first major middle fingers to the Linux community, and
it wouldn't be the last. But get subscribed because
Nvidia has been doing a lot of things lately
to try to make up for it and we've got some videos
planned to talk about them. The question though is
why did they do this? Because whenever a newbie inevitably stumbled across Code 43, their outrage was swift
and it was consistent, because not only did it
just hand a win to AMD who decided not to laugh down Radeon, it was just totally ridiculous. I mean, it's not like passing
a GPU through to a VM, unlock some super secret
performance enhancement that would directly eat
into Nvidia's Quadro sales, but apparently they thought differently, or at least thought the collateral damage was low enough not to matter. Lttstore.com by the way. Now at the time, that bet
probably looked pretty good because back when this policy was enacted Ryzen was but a twinkle in Lisa Su's eye and AMD was staring down bankruptcy. Quad-Core was as high as
it went on the desktop and it would stay that way till 2017, so from Nvidia's
perspective, realistically, what gamer was gonna
sacrifice precious course for this kind of use case
when they had so few? Anyone passing through must
be a professional user. But then everything changed. The overwhelming majority
of new systems these days now have six cores or more and there are a growing number of people looking to legitimately take advantage of all that extra horsepower that goes woefully under utilized, and even the most multi-threaded games. Take someone like our camera guy, David. He wants his Android NAS to
give him high-speed storage for personal video projects,
act as a Plex media server, and serve as a capture
PC for his streaming rig with Nvidia NVENC doing the encoding, using passthrough of course. Or take someone like Anthony who has somehow managed to
game on Linux everyday at home since Proton came out, and
yet still runs into games that straight up run only on Windows. But hold on a minute Linus, you might say, "Those are projects that you
guys did before this change. "So what's the difference?" Okay, there were work arounds to Code 43. Some of them are even pretty simple but Nvidia's meddling caused
no end of headaches for novices who were just as likely to
abandon the idea entirely as to find a solution which sucks because it opens up a lot of possibilities and the hardware's freaking capable of it. Now though, it's as simple
as passing through your GPU and installing the driver as normal, just like you would do on AMD. So let's say you're a
Linux user like Anthony. You can split your CPU and
RAM up and then use an AMD GPU for its superior Linux experience, while using an Nvidia GPU
for, in my opinion still, superior Windows gaming
experience, completely hack free. Got Xbox Game Pass, I'm gonna
play Microsoft store games? You can do that. Wanna play Epic Games Store
or EA Origin exclusives? You can do that too. Want real-time ray tracing and DLSS? Go for it. And this is really cool. With Looking Glass, you don't even need to change
the inputs on your display although it should be noted that at high resolutions
and refresh rates, you can run into PCI-Express bottlenecks. For our part though our Ryzen 5000 Series running PCI-Express Gen 4
managed 1440P, 144 Hertz despite only running eight
lanes to each of our GPU's. If you're okay switching inputs to play your Windows exclusives though, you don't need to worry about any of that because it's all native. There are some drawbacks
to this approach however. While you do get the full
capabilities of the GPU including features like
shadowplay and Nvidia Broadcast, you might still run into problems with anti-cheat software. Engines like BattlEye and Easy Anti-Cheat are able to detect when a user is running in a Virtual Machine. And the situation with
cheating using Virtual Machines has unfortunately become bad enough that they've begun kicking
players who are running them as a preventative measure. This is because anti-cheat
running inside a VM has no idea what the host
operating system is doing. And that host OS just happens to be able to manipulate the Virtual Machines memory in ways that are
undetectable by anti-cheat hence the ban on VMs. They do say that users running in a VM will be banned outright, but there are reports of
exactly that happening. So just be careful if you
decide to try playing Fortnite or Rainbow Six Siege. Are there ways around these limitations? Probably, but I'll leave that up to you to research on your own. For now, the bottom line is
that Nvidia is making changes to how they handle Linux
and virtualization, and many people myself included could not be happier about it. I don't agree with everything they do, but damn it, you gotta give
credit where credit is due. Just like I give credit to our sponsors. Manscaped offers all-in-one
men's grooming tools that have you covered from head to toe. Their perfect package 3.0 kit is designed to make grooming below
the waist easier than ever with their Lawn Mower 3.0,
plus some other goodies. It includes both their Crop Preserver and Crop Reviver sprays to
keep things fresh down under and a portion of every purchase goes toward the Testicular Cancer Society to spread awareness for men's health and early cancer detection. So don't wait. Get 20% off Manscaped with promo code TECH and join the fight
against testicular cancer at the link below. Thanks for watching guys. If you're looking for
something a bit more data-heavy maybe check out our recent video on Nvidia's Resizable BAR implementation. That video is all about them benchmarks. βͺ Because I'm all about the benchmarks βͺ βͺ About the benchmarks βͺ
I do agree with some things, but some of the things where kinda exagerated. Like "janky solutions" Confused in vendor ID, KVM flag off. And some other things I just find kinda meh. But it does bring some of the points.
And like I don't think we should give nvidia any prase for fixing something so incredibley stupid. Like there is 0 reason for them to add it and now we say there doing good cuz they removed it. It's like somebody stealing your phone, and then giving you it back but broken. Cuz they still haven't removed all VM lock shit.
It even features posts from r/VFIO. Some of which you might have come across
Its nice when such a niche (in the context of regular people with regular gear, ignoring the enterprise scene) gets covered on such a large channel.
The removal of the Code 43 error is a good thing in general but I can't help but not praise them for it. The YouTube video's title says it all.
I really wish they'd put some useful information in their video titles. I often skip LTT videos if I think they're not relevant, but this one was, not that I'd have known...
I just tried this with the latest drivers, but does not seem to work (code 43). Is there any limitation still in place?
Driver: 466.11, card: 1050
Edit: thereβs already a post about this and I think, I might have to check my proxmox config.
Pretty cool how many times he featured /r/vfio posts. Might bring some new users or just an increased general awareness.
He should cover the hacked drivers that let you do GRID stuff