mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	KVM: do not bias the generation number in kvm_current_mmio_generation
The next patch will give a meaning (a la seqcount) to the low bit of the generation number. Ensure that it matches between kvm->memslots->generation and kvm_current_mmio_generation(). Cc: stable@vger.kernel.org Reviewed-by: David Matlack <dmatlack@google.com> Reviewed-by: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
							parent
							
								
									fd2752352b
								
							
						
					
					
						commit
						00f034a12f
					
				
					 2 changed files with 8 additions and 6 deletions
				
			
		| 
						 | 
					@ -236,12 +236,7 @@ static unsigned int get_mmio_spte_generation(u64 spte)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static unsigned int kvm_current_mmio_generation(struct kvm *kvm)
 | 
					static unsigned int kvm_current_mmio_generation(struct kvm *kvm)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	/*
 | 
						return kvm_memslots(kvm)->generation & MMIO_GEN_MASK;
 | 
				
			||||||
	 * Init kvm generation close to MMIO_MAX_GEN to easily test the
 | 
					 | 
				
			||||||
	 * code of handling generation number wrap-around.
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	return (kvm_memslots(kvm)->generation +
 | 
					 | 
				
			||||||
		      MMIO_MAX_GEN - 150) & MMIO_GEN_MASK;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void mark_mmio_spte(struct kvm *kvm, u64 *sptep, u64 gfn,
 | 
					static void mark_mmio_spte(struct kvm *kvm, u64 *sptep, u64 gfn,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -477,6 +477,13 @@ static struct kvm *kvm_create_vm(unsigned long type)
 | 
				
			||||||
	kvm->memslots = kzalloc(sizeof(struct kvm_memslots), GFP_KERNEL);
 | 
						kvm->memslots = kzalloc(sizeof(struct kvm_memslots), GFP_KERNEL);
 | 
				
			||||||
	if (!kvm->memslots)
 | 
						if (!kvm->memslots)
 | 
				
			||||||
		goto out_err_no_srcu;
 | 
							goto out_err_no_srcu;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
						 * Init kvm generation close to the maximum to easily test the
 | 
				
			||||||
 | 
						 * code of handling generation number wrap-around.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						kvm->memslots->generation = -150;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	kvm_init_memslots_id(kvm);
 | 
						kvm_init_memslots_id(kvm);
 | 
				
			||||||
	if (init_srcu_struct(&kvm->srcu))
 | 
						if (init_srcu_struct(&kvm->srcu))
 | 
				
			||||||
		goto out_err_no_srcu;
 | 
							goto out_err_no_srcu;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue