@@ -27,7 +27,7 @@ static void init_irq_desc(void)
27
27
for (i = 0U ; i < NR_IRQS ; i ++ ) {
28
28
irq_desc_array [i ].irq = i ;
29
29
irq_desc_array [i ].vector = VECTOR_INVALID ;
30
- spinlock_init (& irq_desc_array [i ].irq_lock );
30
+ spinlock_init (& irq_desc_array [i ].lock );
31
31
}
32
32
33
33
for (i = 0U ; i <= NR_MAX_VECTOR ; i ++ ) {
@@ -75,11 +75,11 @@ uint32_t irq_mark_used(uint32_t irq)
75
75
}
76
76
77
77
desc = & irq_desc_array [irq ];
78
- spinlock_irqsave_obtain (& desc -> irq_lock , & rflags );
78
+ spinlock_irqsave_obtain (& desc -> lock , & rflags );
79
79
if (desc -> used == IRQ_NOT_ASSIGNED ) {
80
80
desc -> used = IRQ_ASSIGNED ;
81
81
}
82
- spinlock_irqrestore_release (& desc -> irq_lock , rflags );
82
+ spinlock_irqrestore_release (& desc -> lock , rflags );
83
83
return irq ;
84
84
}
85
85
@@ -96,18 +96,18 @@ static uint32_t alloc_irq(void)
96
96
97
97
for (i = irq_gsi_num (); i < NR_IRQS ; i ++ ) {
98
98
desc = & irq_desc_array [i ];
99
- spinlock_irqsave_obtain (& desc -> irq_lock , & rflags );
99
+ spinlock_irqsave_obtain (& desc -> lock , & rflags );
100
100
if (desc -> used == IRQ_NOT_ASSIGNED ) {
101
101
desc -> used = IRQ_ASSIGNED ;
102
- spinlock_irqrestore_release (& desc -> irq_lock , rflags );
102
+ spinlock_irqrestore_release (& desc -> lock , rflags );
103
103
break ;
104
104
}
105
- spinlock_irqrestore_release (& desc -> irq_lock , rflags );
105
+ spinlock_irqrestore_release (& desc -> lock , rflags );
106
106
}
107
107
return (i == NR_IRQS ) ? IRQ_INVALID : i ;
108
108
}
109
109
110
- /* need irq_lock protection before use */
110
+ /* need lock protection before use */
111
111
static void local_irq_desc_set_vector (uint32_t irq , uint32_t vr )
112
112
{
113
113
struct irq_desc * desc ;
@@ -124,13 +124,13 @@ static void irq_desc_set_vector(uint32_t irq, uint32_t vr)
124
124
struct irq_desc * desc ;
125
125
126
126
desc = & irq_desc_array [irq ];
127
- spinlock_irqsave_obtain (& desc -> irq_lock , & rflags );
127
+ spinlock_irqsave_obtain (& desc -> lock , & rflags );
128
128
vector_to_irq [vr ] = irq ;
129
129
desc -> vector = vr ;
130
- spinlock_irqrestore_release (& desc -> irq_lock , rflags );
130
+ spinlock_irqrestore_release (& desc -> lock , rflags );
131
131
}
132
132
133
- /* used with holding irq_lock outside */
133
+ /* used with holding lock outside */
134
134
static void _irq_desc_free_vector (uint32_t irq )
135
135
{
136
136
struct irq_desc * desc ;
@@ -145,7 +145,6 @@ static void _irq_desc_free_vector(uint32_t irq)
145
145
146
146
vr = desc -> vector ;
147
147
desc -> used = IRQ_NOT_ASSIGNED ;
148
- desc -> state = IRQ_DESC_PENDING ;
149
148
desc -> vector = VECTOR_INVALID ;
150
149
151
150
vr &= NR_MAX_VECTOR ;
@@ -166,8 +165,7 @@ static void disable_pic_irq(void)
166
165
167
166
int32_t request_irq (uint32_t irq_arg ,
168
167
irq_action_t action_fn ,
169
- void * priv_data ,
170
- const char * name )
168
+ void * priv_data )
171
169
{
172
170
struct irq_desc * desc ;
173
171
uint32_t irq = irq_arg , vector ;
@@ -235,25 +233,20 @@ int32_t request_irq(uint32_t irq_arg,
235
233
}
236
234
237
235
if (desc -> action == NULL ) {
238
- spinlock_irqsave_obtain (& desc -> irq_lock , & rflags );
236
+ spinlock_irqsave_obtain (& desc -> lock , & rflags );
239
237
desc -> priv_data = priv_data ;
240
238
desc -> action = action_fn ;
241
239
242
- /* we are okay using strcpy_s here even with spinlock
243
- * since no #PG in HV right now
244
- */
245
- (void )strcpy_s (desc -> name , 32U , name );
246
-
247
- spinlock_irqrestore_release (& desc -> irq_lock , rflags );
240
+ spinlock_irqrestore_release (& desc -> lock , rflags );
248
241
} else {
249
- pr_err ("%s: request irq(%u) vr(%u) for %s failed,\
242
+ pr_err ("%s: request irq(%u) vr(%u) failed,\
250
243
already requested" , __func__ ,
251
- irq , irq_to_vector (irq ), name );
244
+ irq , irq_to_vector (irq ));
252
245
return - EBUSY ;
253
246
}
254
247
255
- dev_dbg (ACRN_DBG_IRQ , "[%s] %s irq%d vr:0x%x" ,
256
- __func__ , desc -> name , irq , desc -> vector );
248
+ dev_dbg (ACRN_DBG_IRQ , "[%s] irq%d vr:0x%x" ,
249
+ __func__ , irq , desc -> vector );
257
250
258
251
return (int32_t )irq ;
259
252
}
@@ -272,7 +265,7 @@ uint32_t irq_desc_alloc_vector(uint32_t irq)
272
265
}
273
266
274
267
desc = & irq_desc_array [irq ];
275
- spinlock_irqsave_obtain (& desc -> irq_lock , & rflags );
268
+ spinlock_irqsave_obtain (& desc -> lock , & rflags );
276
269
if (desc -> vector != VECTOR_INVALID ) {
277
270
/* already allocated a vector */
278
271
goto OUT ;
@@ -286,7 +279,7 @@ uint32_t irq_desc_alloc_vector(uint32_t irq)
286
279
}
287
280
local_irq_desc_set_vector (irq , vr );
288
281
OUT :
289
- spinlock_irqrestore_release (& desc -> irq_lock , rflags );
282
+ spinlock_irqrestore_release (& desc -> lock , rflags );
290
283
return vr ;
291
284
}
292
285
@@ -301,12 +294,12 @@ void irq_desc_try_free_vector(uint32_t irq)
301
294
}
302
295
303
296
desc = & irq_desc_array [irq ];
304
- spinlock_irqsave_obtain (& desc -> irq_lock , & rflags );
297
+ spinlock_irqsave_obtain (& desc -> lock , & rflags );
305
298
if (desc -> action == NULL ) {
306
299
_irq_desc_free_vector (irq );
307
300
}
308
301
309
- spinlock_irqrestore_release (& desc -> irq_lock , rflags );
302
+ spinlock_irqrestore_release (& desc -> lock , rflags );
310
303
311
304
}
312
305
@@ -421,18 +414,7 @@ int handle_level_interrupt_common(struct irq_desc *desc,
421
414
uint64_t rflags ;
422
415
irq_action_t action = desc -> action ;
423
416
424
- /*
425
- * give other Core a try to return without hold irq_lock
426
- * and record irq_lost count here
427
- */
428
- if (desc -> state != IRQ_DESC_PENDING ) {
429
- send_lapic_eoi ();
430
- desc -> irq_lost_cnt ++ ;
431
- return 0 ;
432
- }
433
-
434
- spinlock_irqsave_obtain (& desc -> irq_lock , & rflags );
435
- desc -> state = IRQ_DESC_IN_PROCESS ;
417
+ spinlock_irqsave_obtain (& desc -> lock , & rflags );
436
418
437
419
/* mask iopaic pin */
438
420
if (irq_is_gsi (desc -> irq )) {
@@ -450,8 +432,7 @@ int handle_level_interrupt_common(struct irq_desc *desc,
450
432
GSI_UNMASK_IRQ (desc -> irq );
451
433
}
452
434
453
- desc -> state = IRQ_DESC_PENDING ;
454
- spinlock_irqrestore_release (& desc -> irq_lock , rflags );
435
+ spinlock_irqrestore_release (& desc -> lock , rflags );
455
436
456
437
return 0 ;
457
438
}
@@ -461,18 +442,7 @@ int common_handler_edge(struct irq_desc *desc, __unused void *handler_data)
461
442
uint64_t rflags ;
462
443
irq_action_t action = desc -> action ;
463
444
464
- /*
465
- * give other Core a try to return without hold irq_lock
466
- * and record irq_lost count here
467
- */
468
- if (desc -> state != IRQ_DESC_PENDING ) {
469
- send_lapic_eoi ();
470
- desc -> irq_lost_cnt ++ ;
471
- return 0 ;
472
- }
473
-
474
- spinlock_irqsave_obtain (& desc -> irq_lock , & rflags );
475
- desc -> state = IRQ_DESC_IN_PROCESS ;
445
+ spinlock_irqsave_obtain (& desc -> lock , & rflags );
476
446
477
447
/* Send EOI to LAPIC/IOAPIC IRR */
478
448
send_lapic_eoi ();
@@ -481,8 +451,7 @@ int common_handler_edge(struct irq_desc *desc, __unused void *handler_data)
481
451
action (desc -> irq , desc -> priv_data );
482
452
}
483
453
484
- desc -> state = IRQ_DESC_PENDING ;
485
- spinlock_irqrestore_release (& desc -> irq_lock , rflags );
454
+ spinlock_irqrestore_release (& desc -> lock , rflags );
486
455
487
456
return 0 ;
488
457
}
@@ -492,18 +461,7 @@ int common_dev_handler_level(struct irq_desc *desc, __unused void *handler_data)
492
461
uint64_t rflags ;
493
462
irq_action_t action = desc -> action ;
494
463
495
- /*
496
- * give other Core a try to return without hold irq_lock
497
- * and record irq_lost count here
498
- */
499
- if (desc -> state != IRQ_DESC_PENDING ) {
500
- send_lapic_eoi ();
501
- desc -> irq_lost_cnt ++ ;
502
- return 0 ;
503
- }
504
-
505
- spinlock_irqsave_obtain (& desc -> irq_lock , & rflags );
506
- desc -> state = IRQ_DESC_IN_PROCESS ;
464
+ spinlock_irqsave_obtain (& desc -> lock , & rflags );
507
465
508
466
/* mask iopaic pin */
509
467
if (irq_is_gsi (desc -> irq )) {
@@ -517,14 +475,13 @@ int common_dev_handler_level(struct irq_desc *desc, __unused void *handler_data)
517
475
action (desc -> irq , desc -> priv_data );
518
476
}
519
477
520
- desc -> state = IRQ_DESC_PENDING ;
521
- spinlock_irqrestore_release (& desc -> irq_lock , rflags );
478
+ spinlock_irqrestore_release (& desc -> lock , rflags );
522
479
523
480
/* we did not unmask irq until guest EOI the vector */
524
481
return 0 ;
525
482
}
526
483
527
- /* no desc->irq_lock for quick handling local interrupt like lapic timer */
484
+ /* no desc->lock for quick handling local interrupt like lapic timer */
528
485
int quick_handler_nolock (struct irq_desc * desc , __unused void * handler_data )
529
486
{
530
487
irq_action_t action = desc -> action ;
@@ -549,9 +506,9 @@ void update_irq_handler(uint32_t irq, irq_handler_t func)
549
506
}
550
507
551
508
desc = & irq_desc_array [irq ];
552
- spinlock_irqsave_obtain (& desc -> irq_lock , & rflags );
509
+ spinlock_irqsave_obtain (& desc -> lock , & rflags );
553
510
desc -> irq_handler = func ;
554
- spinlock_irqrestore_release (& desc -> irq_lock , rflags );
511
+ spinlock_irqrestore_release (& desc -> lock , rflags );
555
512
}
556
513
557
514
void free_irq (uint32_t irq )
@@ -564,16 +521,15 @@ void free_irq(uint32_t irq)
564
521
}
565
522
566
523
desc = & irq_desc_array [irq ];
567
- dev_dbg (ACRN_DBG_IRQ , "[%s] %s irq%d vr:0x%x" ,
568
- __func__ , desc -> name , irq , irq_to_vector (irq ));
524
+ dev_dbg (ACRN_DBG_IRQ , "[%s] irq%d vr:0x%x" ,
525
+ __func__ , irq , irq_to_vector (irq ));
569
526
570
- spinlock_irqsave_obtain (& desc -> irq_lock , & rflags );
527
+ spinlock_irqsave_obtain (& desc -> lock , & rflags );
571
528
572
529
desc -> action = NULL ;
573
530
desc -> priv_data = NULL ;
574
- memset (desc -> name , '\0' , 32U );
575
531
576
- spinlock_irqrestore_release (& desc -> irq_lock , rflags );
532
+ spinlock_irqrestore_release (& desc -> lock , rflags );
577
533
irq_desc_try_free_vector (desc -> irq );
578
534
}
579
535
@@ -594,9 +550,6 @@ void get_cpu_interrupt_info(char *str_arg, int str_max)
594
550
size -= len ;
595
551
str += len ;
596
552
}
597
- len = snprintf (str , size , "\tLOST" );
598
- size -= len ;
599
- str += len ;
600
553
601
554
for (irq = 0U ; irq < NR_IRQS ; irq ++ ) {
602
555
desc = & irq_desc_array [irq ];
@@ -612,9 +565,6 @@ void get_cpu_interrupt_info(char *str_arg, int str_max)
612
565
size -= len ;
613
566
str += len ;
614
567
}
615
- len = snprintf (str , size , "\t%d" , desc -> irq_lost_cnt );
616
- size -= len ;
617
- str += len ;
618
568
}
619
569
}
620
570
snprintf (str , size , "\r\n" );
0 commit comments