This patch adds support for clock synchronization to an external time reference (ETR). The external time reference sends an oscillator signal and a synchronization signal every 2^20 microseconds to keep the TOD clocks of all connected servers in sync. For availability two ETR units can be connected to a machine. If the clock deviates for more than the sync-check tolerance all cpus get a machine check that indicates that the clock is out of sync. For the lovely details how to get the clock back in sync see the code below. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
		
			
				
	
	
		
			38 lines
		
	
	
		
			931 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			931 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  *  include/asm-s390/hardirq.h
 | |
|  *
 | |
|  *  S390 version
 | |
|  *    Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
 | |
|  *    Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
 | |
|  *               Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
 | |
|  *
 | |
|  *  Derived from "include/asm-i386/hardirq.h"
 | |
|  */
 | |
| 
 | |
| #ifndef __ASM_HARDIRQ_H
 | |
| #define __ASM_HARDIRQ_H
 | |
| 
 | |
| #include <linux/threads.h>
 | |
| #include <linux/sched.h>
 | |
| #include <linux/cache.h>
 | |
| #include <linux/interrupt.h>
 | |
| #include <asm/lowcore.h>
 | |
| 
 | |
| /* irq_cpustat_t is unused currently, but could be converted
 | |
|  * into a percpu variable instead of storing softirq_pending
 | |
|  * on the lowcore */
 | |
| typedef struct {
 | |
| 	unsigned int __softirq_pending;
 | |
| } irq_cpustat_t;
 | |
| 
 | |
| #define local_softirq_pending() (S390_lowcore.softirq_pending)
 | |
| 
 | |
| #define __ARCH_IRQ_STAT
 | |
| #define __ARCH_HAS_DO_SOFTIRQ
 | |
| 
 | |
| #define HARDIRQ_BITS	8
 | |
| 
 | |
| extern void account_ticks(u64 time);
 | |
| 
 | |
| #endif /* __ASM_HARDIRQ_H */
 |