forked from mirrors/linux
		
	 6365ba64b4
			
		
	
	
		6365ba64b4
		
	
	
	
	
		
			
			KVM_HC_CLOCK_PAIRING currently fails inside SEV-SNP guests because the guest passes an address to static data to the host. In confidential computing the host can't access arbitrary guest memory so handling the hypercall runs into an "rmpfault". To make the hypercall work, the guest needs to explicitly mark the memory as decrypted. Do that in kvm_arch_ptp_init(), but retain the previous behavior for non-confidential guests to save us from having to allocate memory. Add a new arch-specific function (kvm_arch_ptp_exit()) to free the allocation and mark the memory as encrypted again. Signed-off-by: Jeremi Piotrowski <jpiotrowski@linux.microsoft.com> Link: https://lore.kernel.org/r/20230308150531.477741-1-jpiotrowski@linux.microsoft.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
		
			
				
	
	
		
			22 lines
		
	
	
	
		
			486 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
	
		
			486 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0-or-later */
 | |
| /*
 | |
|  * Virtual PTP 1588 clock for use with KVM guests
 | |
|  *
 | |
|  * Copyright (C) 2017 Red Hat Inc.
 | |
|  */
 | |
| 
 | |
| #ifndef _PTP_KVM_H_
 | |
| #define _PTP_KVM_H_
 | |
| 
 | |
| #include <linux/types.h>
 | |
| 
 | |
| struct timespec64;
 | |
| struct clocksource;
 | |
| 
 | |
| int kvm_arch_ptp_init(void);
 | |
| void kvm_arch_ptp_exit(void);
 | |
| int kvm_arch_ptp_get_clock(struct timespec64 *ts);
 | |
| int kvm_arch_ptp_get_crosststamp(u64 *cycle,
 | |
| 		struct timespec64 *tspec, struct clocksource **cs);
 | |
| 
 | |
| #endif /* _PTP_KVM_H_ */
 |