forked from mirrors/linux
		
	kvm: exit halt polling on need_resched() as well
single_task_running() is usually more general than need_resched() but CFS_BANDWIDTH throttling will use resched_task() when there is just one task to get the task to block. This was causing long-need_resched warnings and was likely allowing VMs to overrun their quota when halt polling. Signed-off-by: Ben Segall <bsegall@google.com> Signed-off-by: Venkatesh Srinivas <venkateshs@chromium.org> Message-Id: <20210429162233.116849-1-venkateshs@chromium.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Cc: stable@vger.kernel.org Reviewed-by: Jim Mattson <jmattson@google.com>
This commit is contained in:
		
							parent
							
								
									d981dd1549
								
							
						
					
					
						commit
						262de4102c
					
				
					 1 changed files with 2 additions and 1 deletions
				
			
		| 
						 | 
					@ -2973,7 +2973,8 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu)
 | 
				
			||||||
				goto out;
 | 
									goto out;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			poll_end = cur = ktime_get();
 | 
								poll_end = cur = ktime_get();
 | 
				
			||||||
		} while (single_task_running() && ktime_before(cur, stop));
 | 
							} while (single_task_running() && !need_resched() &&
 | 
				
			||||||
 | 
								 ktime_before(cur, stop));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	prepare_to_rcuwait(&vcpu->wait);
 | 
						prepare_to_rcuwait(&vcpu->wait);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue