aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/i2c-dev.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/i2c-dev.h')
0 files changed, 0 insertions, 0 deletions
nvin <hpa@linux.intel.com> 2013-02-12 19:27:15 -0500 X86: Handle Hyper-V vmbus interrupts as special hypervisor interrupts' href='/cgit/cgit.cgi/litmus-rt-budgetable-locks.git/.git/commit/arch/x86/kernel/cpu/mshyperv.c?h=update_litmus_2019&id=bc2b0331e077f576369a2b6c75d15ed4de4ef91f'>bc2b0331e077
bc2b0331e077
9e7827b5ea4c
d68ce0177c1e
ca3ba2a2f4a4
2517281d63a2
59107e2f4883
a2a47c6c3d1a
e08cae4181af
9279aa55061a
a2a47c6c3d1a
3c433679ab66
76d388cd72ab
1e034743e918

1aec169673d7




6af7faf60766
1aec169673d7



a33fd4c27b3a


6af7faf60766
1aec169673d7


76d388cd72ab
1aec169673d7










76d388cd72ab
1aec169673d7





2517281d63a2











b4370df2b1f5











1aec169673d7
1e034743e918
2517281d63a2






b4370df2b1f5





1e034743e918

b4370df2b1f5
9df56f19a500
a2a47c6c3d1a
e08cae4181af

a2a47c6c3d1a
e08cae4181af
9df56f19a500
a2a47c6c3d1a
e08cae4181af

a2a47c6c3d1a
9df56f19a500





a2a47c6c3d1a

1e2ae9ec072f




59107e2f4883



















71c2a2d0a81f








e08cae4181af
a2a47c6c3d1a
8de8af7e0873




a2a47c6c3d1a
e08cae4181af
a2a47c6c3d1a
e08cae4181af
cc2dd4027a43
e08cae4181af
a2a47c6c3d1a
1b74dde7c47c

6f4151c89b7d
8de8af7e0873














71c2a2d0a81f





90ab9d551093
2cf0284223a4

9e7827b5ea4c


4c08edd30501

9e7827b5ea4c


1b74dde7c47c

9e7827b5ea4c
59107e2f4883


90ab9d551093
9e7827b5ea4c
ca3ba2a2f4a4



1e034743e918
2517281d63a2
b4370df2b1f5
1e034743e918
88c9281a9fba
1e2ae9ec072f






8730046c1498






a2a47c6c3d1a
e08cae4181af





96f6e775b586
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260







                                                                       
                                                          



                        

                              

                         
                          
                      
                            
                      
                        
                          
                           

                         
                     
                         
                      
                     
                      
                       
                    
 
                                
                             
 
                             
                                   

                                                      




                                                      
                       



                                            


                                                                  
                      


                               
                                              










                                                                      
                              





                                                             











                                                  











                                                                  
 
                        






                                                  





                                                           

                              
 
                                                
 

                             
 
                                                  
                         
 

                                                                             
 





                                                             

 




                                            



















                                                                       








                                               
                                                
 




                             
          
                                         
           
                                                              
                                                                   
                                                                      
 

                                                      
 














                                                                             





                                                                            
                            

                                                                            


                                          

                                           


                                                                      

                                                               
         


                                                                         
      
 



                           
                                                           
                                                   
                                                               
      
                                                






                                                                           






                                                                  
 





                                                              
                                   
/*
 * HyperV  Detection code.
 *
 * Copyright (C) 2010, Novell, Inc.
 * Author : K. Y. Srinivasan <ksrinivasan@novell.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; version 2 of the License.
 *
 */

#include <linux/types.h>
#include <linux/time.h>
#include <linux/clocksource.h>
#include <linux/init.h>
#include <linux/export.h>
#include <linux/hardirq.h>
#include <linux/efi.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/kexec.h>
#include <asm/processor.h>
#include <asm/hypervisor.h>
#include <asm/hyperv.h>
#include <asm/mshyperv.h>
#include <asm/desc.h>
#include <asm/irq_regs.h>
#include <asm/i8259.h>
#include <asm/apic.h>
#include <asm/timer.h>
#include <asm/reboot.h>
#include <asm/nmi.h>

struct ms_hyperv_info ms_hyperv;
EXPORT_SYMBOL_GPL(ms_hyperv);

#if IS_ENABLED(CONFIG_HYPERV)
static void (*vmbus_handler)(void);
static void (*hv_kexec_handler)(void);
static void (*hv_crash_handler)(struct pt_regs *regs);

void hyperv_vector_handler(struct pt_regs *regs)
{
	struct pt_regs *old_regs = set_irq_regs(regs);

	entering_irq();
	inc_irq_stat(irq_hv_callback_count);
	if (vmbus_handler)
		vmbus_handler();

	if (ms_hyperv.hints & HV_X64_DEPRECATING_AEOI_RECOMMENDED)
		ack_APIC_irq();

	exiting_irq();
	set_irq_regs(old_regs);
}

void hv_setup_vmbus_irq(void (*handler)(void))
{
	vmbus_handler = handler;
	/*
	 * Setup the IDT for hypervisor callback. Prevent reallocation
	 * at module reload.
	 */
	if (!test_bit(HYPERVISOR_CALLBACK_VECTOR, used_vectors))
		alloc_intr_gate(HYPERVISOR_CALLBACK_VECTOR,
				hyperv_callback_vector);
}

void hv_remove_vmbus_irq(void)
{
	/* We have no way to deallocate the interrupt gate */
	vmbus_handler = NULL;
}
EXPORT_SYMBOL_GPL(hv_setup_vmbus_irq);
EXPORT_SYMBOL_GPL(hv_remove_vmbus_irq);

void hv_setup_kexec_handler(void (*handler)(void))
{
	hv_kexec_handler = handler;
}
EXPORT_SYMBOL_GPL(hv_setup_kexec_handler);

void hv_remove_kexec_handler(void)
{
	hv_kexec_handler = NULL;
}
EXPORT_SYMBOL_GPL(hv_remove_kexec_handler);

void hv_setup_crash_handler(void (*handler)(struct pt_regs *regs))
{
	hv_crash_handler = handler;
}
EXPORT_SYMBOL_GPL(hv_setup_crash_handler);

void hv_remove_crash_handler(void)
{
	hv_crash_handler = NULL;
}
EXPORT_SYMBOL_GPL(hv_remove_crash_handler);

#ifdef CONFIG_KEXEC_CORE
static void hv_machine_shutdown(void)
{
	if (kexec_in_progress && hv_kexec_handler)
		hv_kexec_handler();
	native_machine_shutdown();
}

static void hv_machine_crash_shutdown(struct pt_regs *regs)
{
	if (hv_crash_handler)
		hv_crash_handler(regs);
	native_machine_crash_shutdown(regs);
}