• Home
  • Raw
  • Download

Lines Matching refs:irq

60 fn encode_selector_from_irq(irq: usize, is_high_bits: bool) -> u8 {  in encode_selector_from_irq()
61 (irq as u8) * IOWIN_SCALE + IOWIN_OFF + (is_high_bits as u8) in encode_selector_from_irq()
188 pub fn service_irq(&mut self, irq: usize, level: bool) -> bool { in service_irq()
189 let entry = &mut self.redirect_table[irq]; in service_irq()
198 self.current_interrupt_level_bitmap &= !(1 << irq); in service_irq()
204 && self.current_interrupt_level_bitmap & (1 << irq) != 0 in service_irq()
209 self.current_interrupt_level_bitmap |= 1 << irq; in service_irq()
223 if irq == RTC_IRQ && self.rtc_remote_irr { in service_irq()
232 } else if irq == RTC_IRQ && injected { in service_irq()
317 let irq = kvm::NUM_IOAPIC_PINS - 1; in set_up() localVariable
318 let ioapic = set_up_with_irq(irq, trigger); in set_up()
319 (ioapic, irq) in set_up()
322 fn set_up_with_irq(irq: usize, trigger: TriggerMode) -> Ioapic { in set_up_with_irq()
324 set_up_redirection_table_entry(&mut ioapic, irq, trigger); in set_up_with_irq()
340 fn read_entry(ioapic: &mut Ioapic, irq: usize) -> RedirectionTableEntry { in read_entry()
345 read_reg(ioapic, encode_selector_from_irq(irq, false)).into(), in read_entry()
350 read_reg(ioapic, encode_selector_from_irq(irq, true)).into(), in read_entry()
355 fn write_entry(ioapic: &mut Ioapic, irq: usize, entry: RedirectionTableEntry) { in write_entry()
358 encode_selector_from_irq(irq, false), in write_entry()
363 encode_selector_from_irq(irq, true), in write_entry()
368 fn set_up_redirection_table_entry(ioapic: &mut Ioapic, irq: usize, trigger_mode: TriggerMode) { in set_up_redirection_table_entry()
375 write_entry(ioapic, irq, entry); in set_up_redirection_table_entry()
378 fn set_mask(ioapic: &mut Ioapic, irq: usize, mask: bool) { in set_mask()
379 let mut entry = read_entry(ioapic, irq); in set_mask()
381 write_entry(ioapic, irq, entry); in set_mask()
452 let (mut ioapic, irq) = set_up(TriggerMode::Level); in service_level_irq()
455 ioapic.service_irq(irq, true); in service_level_irq()
456 ioapic.service_irq(irq, false); in service_level_irq()
461 let (mut ioapic, irq) = set_up(TriggerMode::Level); in service_multiple_level_irqs()
463 ioapic.service_irq(irq, true); in service_multiple_level_irqs()
464 ioapic.service_irq(irq, false); in service_multiple_level_irqs()
466 ioapic.service_irq(irq, true); in service_multiple_level_irqs()
473 let (mut ioapic, irq) = set_up(TriggerMode::Level); in coalesce_multiple_level_irqs()
476 ioapic.service_irq(irq, true); in coalesce_multiple_level_irqs()
477 ioapic.service_irq(irq, false); in coalesce_multiple_level_irqs()
478 ioapic.service_irq(irq, true); in coalesce_multiple_level_irqs()
484 let irq = RTC_IRQ; in coalesce_multiple_rtc_irqs() localVariable
485 let mut ioapic = set_up_with_irq(irq, TriggerMode::Edge); in coalesce_multiple_rtc_irqs()
488 ioapic.service_irq(irq, true); in coalesce_multiple_rtc_irqs()
489 ioapic.service_irq(irq, false); in coalesce_multiple_rtc_irqs()
490 ioapic.service_irq(irq, true); in coalesce_multiple_rtc_irqs()
497 let (mut ioapic, irq) = set_up(TriggerMode::Level); in reinject_level_interrupt()
500 ioapic.service_irq(irq, true); in reinject_level_interrupt()
501 ioapic.service_irq(irq, false); in reinject_level_interrupt()
502 ioapic.service_irq(irq, true); in reinject_level_interrupt()
511 let (mut ioapic, irq) = set_up(TriggerMode::Edge); in service_edge_triggered_irq()
514 ioapic.service_irq(irq, true); in service_edge_triggered_irq()
515 ioapic.service_irq(irq, true); // Repeated asserts before a deassert should be ignored. in service_edge_triggered_irq()
516 ioapic.service_irq(irq, false); in service_edge_triggered_irq()
523 let (mut ioapic, irq) = set_up(TriggerMode::Edge); in edge_trigger_unmask_test()
527 ioapic.service_irq(irq, true); in edge_trigger_unmask_test()
529 set_mask(&mut ioapic, irq, true); in edge_trigger_unmask_test()
530 ioapic.service_irq(irq, false); in edge_trigger_unmask_test()
533 ioapic.service_irq(irq, true); in edge_trigger_unmask_test()
534 ioapic.service_irq(irq, false); in edge_trigger_unmask_test()
536 set_mask(&mut ioapic, irq, false); in edge_trigger_unmask_test()
540 ioapic.service_irq(irq, true); in edge_trigger_unmask_test()
541 ioapic.service_irq(irq, false); in edge_trigger_unmask_test()
548 let (mut ioapic, irq) = set_up(TriggerMode::Level); in level_trigger_unmask_test()
550 set_mask(&mut ioapic, irq, true); in level_trigger_unmask_test()
551 ioapic.service_irq(irq, true); in level_trigger_unmask_test()
554 set_mask(&mut ioapic, irq, false); in level_trigger_unmask_test()
561 let (mut ioapic, irq) = set_up(TriggerMode::Edge); in end_of_interrupt_edge_triggered_irq()
564 ioapic.service_irq(irq, true); in end_of_interrupt_edge_triggered_irq()
567 ioapic.service_irq(irq, true); in end_of_interrupt_edge_triggered_irq()
568 ioapic.service_irq(irq, false); in end_of_interrupt_edge_triggered_irq()
574 let (mut ioapic, irq) = set_up(TriggerMode::Edge); in service_multiple_edge_irqs()
576 ioapic.service_irq(irq, true); in service_multiple_edge_irqs()
578 ioapic.service_irq(irq, false); in service_multiple_edge_irqs()
580 ioapic.service_irq(irq, true); in service_multiple_edge_irqs()
582 ioapic.service_irq(irq, false); in service_multiple_edge_irqs()
588 let (mut ioapic, irq) = set_up(TriggerMode::Level); in service_negative_polarity_irq()
590 let mut entry = read_entry(&mut ioapic, irq); in service_negative_polarity_irq()
592 write_entry(&mut ioapic, irq, entry); in service_negative_polarity_irq()
595 ioapic.service_irq(irq, false); in service_negative_polarity_irq()
601 let (mut ioapic, irq) = set_up(TriggerMode::Level); in remote_irr_read_only()
603 ioapic.redirect_table[irq].set_remote_irr(true); in remote_irr_read_only()
605 let mut entry = read_entry(&mut ioapic, irq); in remote_irr_read_only()
607 write_entry(&mut ioapic, irq, entry); in remote_irr_read_only()
609 assert_eq!(read_entry(&mut ioapic, irq).get_remote_irr(), true); in remote_irr_read_only()
614 let (mut ioapic, irq) = set_up(TriggerMode::Level); in delivery_status_read_only()
616 ioapic.redirect_table[irq].set_delivery_status(DeliveryStatus::Pending); in delivery_status_read_only()
618 let mut entry = read_entry(&mut ioapic, irq); in delivery_status_read_only()
620 write_entry(&mut ioapic, irq, entry); in delivery_status_read_only()
623 read_entry(&mut ioapic, irq).get_delivery_status(), in delivery_status_read_only()
630 let (mut ioapic, irq) = set_up(TriggerMode::Level); in level_to_edge_transition_clears_remote_irr()
632 ioapic.redirect_table[irq].set_remote_irr(true); in level_to_edge_transition_clears_remote_irr()
634 let mut entry = read_entry(&mut ioapic, irq); in level_to_edge_transition_clears_remote_irr()
636 write_entry(&mut ioapic, irq, entry); in level_to_edge_transition_clears_remote_irr()
638 assert_eq!(read_entry(&mut ioapic, irq).get_remote_irr(), false); in level_to_edge_transition_clears_remote_irr()
643 let (mut ioapic, irq) = set_up(TriggerMode::Level); in masking_preserves_remote_irr()
645 ioapic.redirect_table[irq].set_remote_irr(true); in masking_preserves_remote_irr()
647 set_mask(&mut ioapic, irq, true); in masking_preserves_remote_irr()
648 set_mask(&mut ioapic, irq, false); in masking_preserves_remote_irr()
650 assert_eq!(read_entry(&mut ioapic, irq).get_remote_irr(), true); in masking_preserves_remote_irr()
656 let (mut ioapic, irq) = set_up(TriggerMode::Level); in reconfiguration_race()
660 ioapic.service_irq(irq, true); in reconfiguration_race()
663 let mut entry = read_entry(&mut ioapic, irq); in reconfiguration_race()
666 ioapic.service_irq(irq, false); in reconfiguration_race()
670 write_entry(&mut ioapic, irq, entry); in reconfiguration_race()
674 ioapic.service_irq(irq, true); in reconfiguration_race()
675 ioapic.service_irq(irq, false); in reconfiguration_race()
681 let (mut ioapic, irq) = set_up(TriggerMode::Level); in implicit_eoi()
684 ioapic.service_irq(irq, true); in implicit_eoi()
686 ioapic.service_irq(irq, false); in implicit_eoi()
689 let mut entry = read_entry(&mut ioapic, irq); in implicit_eoi()
691 write_entry(&mut ioapic, irq, entry); in implicit_eoi()
693 write_entry(&mut ioapic, irq, entry); in implicit_eoi()
696 ioapic.service_irq(irq, true); in implicit_eoi()
698 ioapic.service_irq(irq, false); in implicit_eoi()
727 let (mut ioapic, irq) = set_up(TriggerMode::Edge); in set_redirection_entry_by_bits()
728 write_entry(&mut ioapic, irq, entry); in set_redirection_entry_by_bits()
730 read_entry(&mut ioapic, irq).get_trigger_mode(), in set_redirection_entry_by_bits()
735 ioapic.service_irq(irq, true); in set_redirection_entry_by_bits()