Blame view

kernel/linux-rt-4.4.41/arch/x86/include/asm/irqdomain.h 1.69 KB
5113f6f70   김현기   kernel add
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
  #ifndef _ASM_IRQDOMAIN_H
  #define _ASM_IRQDOMAIN_H
  
  #include <linux/irqdomain.h>
  #include <asm/hw_irq.h>
  
  #ifdef CONFIG_X86_LOCAL_APIC
  enum {
  	/* Allocate contiguous CPU vectors */
  	X86_IRQ_ALLOC_CONTIGUOUS_VECTORS		= 0x1,
  };
  
  extern struct irq_domain *x86_vector_domain;
  
  extern void init_irq_alloc_info(struct irq_alloc_info *info,
  				const struct cpumask *mask);
  extern void copy_irq_alloc_info(struct irq_alloc_info *dst,
  				struct irq_alloc_info *src);
  #endif /* CONFIG_X86_LOCAL_APIC */
  
  #ifdef CONFIG_X86_IO_APIC
  struct device_node;
  struct irq_data;
  
  enum ioapic_domain_type {
  	IOAPIC_DOMAIN_INVALID,
  	IOAPIC_DOMAIN_LEGACY,
  	IOAPIC_DOMAIN_STRICT,
  	IOAPIC_DOMAIN_DYNAMIC,
  };
  
  struct ioapic_domain_cfg {
  	enum ioapic_domain_type		type;
  	const struct irq_domain_ops	*ops;
  	struct device_node		*dev;
  };
  
  extern const struct irq_domain_ops mp_ioapic_irqdomain_ops;
  
  extern int mp_irqdomain_alloc(struct irq_domain *domain, unsigned int virq,
  			      unsigned int nr_irqs, void *arg);
  extern void mp_irqdomain_free(struct irq_domain *domain, unsigned int virq,
  			      unsigned int nr_irqs);
  extern void mp_irqdomain_activate(struct irq_domain *domain,
  				  struct irq_data *irq_data);
  extern void mp_irqdomain_deactivate(struct irq_domain *domain,
  				    struct irq_data *irq_data);
  extern int mp_irqdomain_ioapic_idx(struct irq_domain *domain);
  #endif /* CONFIG_X86_IO_APIC */
  
  #ifdef CONFIG_PCI_MSI
  extern void arch_init_msi_domain(struct irq_domain *domain);
  #else
  static inline void arch_init_msi_domain(struct irq_domain *domain) { }
  #endif
  
  #ifdef CONFIG_HT_IRQ
  extern void arch_init_htirq_domain(struct irq_domain *domain);
  #else
  static inline void arch_init_htirq_domain(struct irq_domain *domain) { }
  #endif
  
  #endif