mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	genirq: Make irq_set_vcpu_affinity available for CONFIG_SMP=n
irq_set_vcpu_affinity() is needed when CONFIG_SMP=n, so move the definition out of "#ifdef CONFIG_SMP" Suggested-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Feng Wu <feng.wu@intel.com> Cc: jiang.liu@linux.intel.com Cc: pbonzini@redhat.com Link: http://lkml.kernel.org/r/1443860438-144926-1-git-send-email-feng.wu@intel.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
		
							parent
							
								
									e509bd7da1
								
							
						
					
					
						commit
						fcf1ae2f7a
					
				
					 1 changed files with 31 additions and 31 deletions
				
			
		| 
						 | 
					@ -258,37 +258,6 @@ int irq_set_affinity_hint(unsigned int irq, const struct cpumask *m)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
EXPORT_SYMBOL_GPL(irq_set_affinity_hint);
 | 
					EXPORT_SYMBOL_GPL(irq_set_affinity_hint);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 *	irq_set_vcpu_affinity - Set vcpu affinity for the interrupt
 | 
					 | 
				
			||||||
 *	@irq: interrupt number to set affinity
 | 
					 | 
				
			||||||
 *	@vcpu_info: vCPU specific data
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 *	This function uses the vCPU specific data to set the vCPU
 | 
					 | 
				
			||||||
 *	affinity for an irq. The vCPU specific data is passed from
 | 
					 | 
				
			||||||
 *	outside, such as KVM. One example code path is as below:
 | 
					 | 
				
			||||||
 *	KVM -> IOMMU -> irq_set_vcpu_affinity().
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
int irq_set_vcpu_affinity(unsigned int irq, void *vcpu_info)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	unsigned long flags;
 | 
					 | 
				
			||||||
	struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0);
 | 
					 | 
				
			||||||
	struct irq_data *data;
 | 
					 | 
				
			||||||
	struct irq_chip *chip;
 | 
					 | 
				
			||||||
	int ret = -ENOSYS;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (!desc)
 | 
					 | 
				
			||||||
		return -EINVAL;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	data = irq_desc_get_irq_data(desc);
 | 
					 | 
				
			||||||
	chip = irq_data_get_irq_chip(data);
 | 
					 | 
				
			||||||
	if (chip && chip->irq_set_vcpu_affinity)
 | 
					 | 
				
			||||||
		ret = chip->irq_set_vcpu_affinity(data, vcpu_info);
 | 
					 | 
				
			||||||
	irq_put_desc_unlock(desc, flags);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return ret;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
EXPORT_SYMBOL_GPL(irq_set_vcpu_affinity);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void irq_affinity_notify(struct work_struct *work)
 | 
					static void irq_affinity_notify(struct work_struct *work)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct irq_affinity_notify *notify =
 | 
						struct irq_affinity_notify *notify =
 | 
				
			||||||
| 
						 | 
					@ -424,6 +393,37 @@ setup_affinity(struct irq_desc *desc, struct cpumask *mask)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *	irq_set_vcpu_affinity - Set vcpu affinity for the interrupt
 | 
				
			||||||
 | 
					 *	@irq: interrupt number to set affinity
 | 
				
			||||||
 | 
					 *	@vcpu_info: vCPU specific data
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *	This function uses the vCPU specific data to set the vCPU
 | 
				
			||||||
 | 
					 *	affinity for an irq. The vCPU specific data is passed from
 | 
				
			||||||
 | 
					 *	outside, such as KVM. One example code path is as below:
 | 
				
			||||||
 | 
					 *	KVM -> IOMMU -> irq_set_vcpu_affinity().
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					int irq_set_vcpu_affinity(unsigned int irq, void *vcpu_info)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						unsigned long flags;
 | 
				
			||||||
 | 
						struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0);
 | 
				
			||||||
 | 
						struct irq_data *data;
 | 
				
			||||||
 | 
						struct irq_chip *chip;
 | 
				
			||||||
 | 
						int ret = -ENOSYS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!desc)
 | 
				
			||||||
 | 
							return -EINVAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						data = irq_desc_get_irq_data(desc);
 | 
				
			||||||
 | 
						chip = irq_data_get_irq_chip(data);
 | 
				
			||||||
 | 
						if (chip && chip->irq_set_vcpu_affinity)
 | 
				
			||||||
 | 
							ret = chip->irq_set_vcpu_affinity(data, vcpu_info);
 | 
				
			||||||
 | 
						irq_put_desc_unlock(desc, flags);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return ret;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					EXPORT_SYMBOL_GPL(irq_set_vcpu_affinity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void __disable_irq(struct irq_desc *desc)
 | 
					void __disable_irq(struct irq_desc *desc)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (!desc->depth++)
 | 
						if (!desc->depth++)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue