Bug 1967603

Summary: Enable interrupt based asynchronous page fault mechanism by default
Product: Red Hat Enterprise Linux Advanced Virtualization Reporter: Vitaly Kuznetsov <vkuznets>
Component: qemu-kvmAssignee: Vitaly Kuznetsov <vkuznets>
qemu-kvm sub component: Machine Types QA Contact: liunana <nanliu>
Status: CLOSED ERRATA Docs Contact:
Severity: unspecified    
Priority: unspecified CC: chayang, coli, jinzhao, juzhang, virt-maint
Version: 8.5Keywords: FutureFeature, Triaged
Target Milestone: rc   
Target Release: 8.5   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qemu-kvm-6.0.0-20.module+el8.5.0+11499+199527ef Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of:
: 1967605 (view as bug list) Environment:
Last Closed: 2021-11-16 07:53:43 UTC Type: Feature Request
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1967605    
Bug Blocks: 1957194    

Description Vitaly Kuznetsov 2021-06-03 13:06:10 UTC
RHEL-8.4 disabled traditional asynchronous page fault mechanism and added a new one (interrupt based asynchronous page fault) which can be enabled with 'kvm-asyncpf-int' CPU option. The new mechanism is, however, not enabled by default as upstream QEMU supports kernels which don't have it. Downstream, we should be good as RHEL kernels starting with 8.4 have the required bits.

Comment 8 Yanan Fu 2021-06-22 12:06:03 UTC
QE bot(pre verify): Set 'Verified:Tested,SanityOnly' as gating/tier1 test pass.

Comment 18 errata-xmlrpc 2021-11-16 07:53:43 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (virt:av bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2021:4684

Comment 19 liunana 2023-02-07 03:50:20 UTC
(In reply to Vitaly Kuznetsov from comment #0)
> RHEL-8.4 disabled traditional asynchronous page fault mechanism and added a
> new one (interrupt based asynchronous page fault) which can be enabled with
> 'kvm-asyncpf-int' CPU option. The new mechanism is, however, not enabled by
> default as upstream QEMU supports kernels which don't have it. Downstream,
> we should be good as RHEL kernels starting with 8.4 have the required bits.

Hi Vitaly,


From this description, do you mean that this feature needs guest having RHEL8.4 kernel or newer, right?
I didn't get the expected results while testing RHEL7.9 guest on RHEL9.2.


Test Env:
Guest: 3.10.0-1160.el7.x86_64
Host
   5.14.0-252.el9.x86_64
   qemu-kvm-7.2.0-6.el9.x86_64
   
Command Line:
-machine pc-q35-rhel9.2.0,memory-backend=mem-machine_mem \
-smp 6,maxcpus=6,cores=3,threads=1,dies=1,sockets=2  \


Test results:
Inside guest: 
# dmesg | grep async
[    0.000000] KVM setup async PF for cpu 0
[    0.991006] KVM setup async PF for cpu 1
[    1.002968] KVM setup async PF for cpu 2
[    1.024623] KVM setup async PF for cpu 3
[    1.035768] KVM setup async PF for cpu 4
[    1.048057] KVM setup async PF for cpu 5

# grep Hyp /proc/interrupts   ------> Nothing output


Please help to check this, thanks.

BR,
Nana

Comment 20 Vitaly Kuznetsov 2023-02-07 16:30:58 UTC
(In reply to liunana from comment #19)
> (In reply to Vitaly Kuznetsov from comment #0)
> > RHEL-8.4 disabled traditional asynchronous page fault mechanism and added a
> > new one (interrupt based asynchronous page fault) which can be enabled with
> > 'kvm-asyncpf-int' CPU option. The new mechanism is, however, not enabled by
> > default as upstream QEMU supports kernels which don't have it. Downstream,
> > we should be good as RHEL kernels starting with 8.4 have the required bits.
> 
> Hi Vitaly,
> 
> 
> From this description, do you mean that this feature needs guest having
> RHEL8.4 kernel or newer, right?
> I didn't get the expected results while testing RHEL7.9 guest on RHEL9.2.
> 
> 

Yea, RHEL7 doesn't support this new mechanism, we backported it to RHEL8.4
so only kernels >= kernel-4.18.0-252.el8 use it. There's no harm done if the
guest doesn't support the feature, it just won't get enabled.