(Facter::Resolvers::VirtWhat.resolve(:vm) == 'kvm' || https://github.com/puppetlabs/facter/blob/8a3accd247940750e60f1fdc93c4f20c71b070a3/lib/facts/linux/virtual.rb#L44 == 'kvm') && product_name != 'VirtualBox' && !product_name.match(/^Parallels/)
For other info the checks are identical as the ones from windows : https://github.com/puppetlabs/facter/blob/8a3accd247940750e60f1fdc93c4f20c71b070a3/lib/facts/windows/hypervisors/kvm.rb#L24
On AWS C5 instances with Nitro hypervisors (nitro is a version of KVM)
./bin/facter facterversion hypervisors
facterversion => 4.0.29
hypervisors => {
kvm => {
amazon => true
}
On GCE with KVM hypervisor
facterversion => 3.14.11
google => true
On OVH, OpenStack with KVM
openstack => true