Loading drivers/xen/events/events_base.c +24 −44 Original line number Diff line number Diff line Loading @@ -248,15 +248,6 @@ static int set_evtchn_to_irq(evtchn_port_t evtchn, unsigned int irq) return 0; } int get_evtchn_to_irq(evtchn_port_t evtchn) { if (evtchn >= xen_evtchn_max_channels()) return -1; if (evtchn_to_irq[EVTCHN_ROW(evtchn)] == NULL) return -1; return READ_ONCE(evtchn_to_irq[EVTCHN_ROW(evtchn)][EVTCHN_COL(evtchn)]); } /* Get info for IRQ */ static struct irq_info *info_for_irq(unsigned irq) { Loading Loading @@ -373,50 +364,37 @@ static int xen_irq_info_evtchn_setup(struct irq_info *info, return ret; } static int xen_irq_info_ipi_setup(unsigned cpu, unsigned irq, evtchn_port_t evtchn, enum ipi_vector ipi) static int xen_irq_info_ipi_setup(struct irq_info *info, unsigned int cpu, evtchn_port_t evtchn, enum ipi_vector ipi) { struct irq_info *info = info_for_irq(irq); info->u.ipi = ipi; per_cpu(ipi_to_irq, cpu)[ipi] = irq; per_cpu(ipi_to_irq, cpu)[ipi] = info->irq; per_cpu(ipi_to_evtchn, cpu)[ipi] = evtchn; return xen_irq_info_common_setup(info, irq, IRQT_IPI, evtchn, 0); return xen_irq_info_common_setup(info, IRQT_IPI, evtchn, 0); } static int xen_irq_info_virq_setup(unsigned cpu, unsigned irq, evtchn_port_t evtchn, unsigned virq) static int xen_irq_info_virq_setup(struct irq_info *info, unsigned int cpu, evtchn_port_t evtchn, unsigned int virq) { struct irq_info *info = info_for_irq(irq); info->u.virq = virq; per_cpu(virq_to_irq, cpu)[virq] = irq; per_cpu(virq_to_irq, cpu)[virq] = info->irq; return xen_irq_info_common_setup(info, irq, IRQT_VIRQ, evtchn, 0); return xen_irq_info_common_setup(info, IRQT_VIRQ, evtchn, 0); } static int xen_irq_info_pirq_setup(unsigned irq, evtchn_port_t evtchn, unsigned pirq, unsigned gsi, uint16_t domid, unsigned char flags) static int xen_irq_info_pirq_setup(struct irq_info *info, evtchn_port_t evtchn, unsigned int pirq, unsigned int gsi, uint16_t domid, unsigned char flags) { struct irq_info *info = info_for_irq(irq); info->u.pirq.pirq = pirq; info->u.pirq.gsi = gsi; info->u.pirq.domid = domid; info->u.pirq.flags = flags; return xen_irq_info_common_setup(info, irq, IRQT_PIRQ, evtchn, 0); return xen_irq_info_common_setup(info, IRQT_PIRQ, evtchn, 0); } static void xen_irq_info_cleanup(struct irq_info *info) Loading Loading @@ -946,7 +924,6 @@ static void disable_pirq(struct irq_data *data) int xen_irq_from_gsi(unsigned gsi) { int irq; struct irq_info *info; list_for_each_entry(info, &xen_irq_list_head, list) { Loading Loading @@ -977,20 +954,22 @@ static void __unbind_from_irq(struct irq_info *info, unsigned int irq) return; } evtchn = info->evtchn; if (VALID_EVTCHN(evtchn)) { unsigned int cpu = cpu_from_irq(irq); unsigned int cpu = info->cpu; struct xenbus_device *dev; if (!info->is_static) xen_evtchn_close(evtchn); close_evtchn = true; switch (type_from_irq(irq)) { switch (info->type) { case IRQT_VIRQ: per_cpu(virq_to_irq, cpu)[virq_from_irq(irq)] = -1; per_cpu(virq_to_irq, cpu)[virq_from_irq(info)] = -1; break; case IRQT_IPI: per_cpu(ipi_to_irq, cpu)[ipi_from_irq(irq)] = -1; per_cpu(ipi_to_evtchn, cpu)[ipi_from_irq(irq)] = 0; per_cpu(ipi_to_irq, cpu)[ipi_from_irq(info)] = -1; per_cpu(ipi_to_evtchn, cpu)[ipi_from_irq(info)] = 0; break; case IRQT_EVTCHN: dev = info->u.interdomain; Loading Loading @@ -1640,10 +1619,11 @@ EXPORT_SYMBOL_GPL(evtchn_get); void evtchn_put(evtchn_port_t evtchn) { int irq = get_evtchn_to_irq(evtchn); if (WARN_ON(irq == -1)) struct irq_info *info = evtchn_to_info(evtchn); if (WARN_ON(!info)) return; unbind_from_irq(irq); unbind_from_irq(info->irq); } EXPORT_SYMBOL_GPL(evtchn_put); Loading kernel/trace/trace_events.c +1 −1 Original line number Diff line number Diff line Loading @@ -1013,7 +1013,7 @@ void event_file_put(struct trace_event_file *file) static void remove_event_file_dir(struct trace_event_file *file) { eventfs_remove(file->ef); eventfs_remove_dir(file->ei); list_del(&file->list); remove_subsystem(file->system); free_event_filter(file->filter); Loading Loading
drivers/xen/events/events_base.c +24 −44 Original line number Diff line number Diff line Loading @@ -248,15 +248,6 @@ static int set_evtchn_to_irq(evtchn_port_t evtchn, unsigned int irq) return 0; } int get_evtchn_to_irq(evtchn_port_t evtchn) { if (evtchn >= xen_evtchn_max_channels()) return -1; if (evtchn_to_irq[EVTCHN_ROW(evtchn)] == NULL) return -1; return READ_ONCE(evtchn_to_irq[EVTCHN_ROW(evtchn)][EVTCHN_COL(evtchn)]); } /* Get info for IRQ */ static struct irq_info *info_for_irq(unsigned irq) { Loading Loading @@ -373,50 +364,37 @@ static int xen_irq_info_evtchn_setup(struct irq_info *info, return ret; } static int xen_irq_info_ipi_setup(unsigned cpu, unsigned irq, evtchn_port_t evtchn, enum ipi_vector ipi) static int xen_irq_info_ipi_setup(struct irq_info *info, unsigned int cpu, evtchn_port_t evtchn, enum ipi_vector ipi) { struct irq_info *info = info_for_irq(irq); info->u.ipi = ipi; per_cpu(ipi_to_irq, cpu)[ipi] = irq; per_cpu(ipi_to_irq, cpu)[ipi] = info->irq; per_cpu(ipi_to_evtchn, cpu)[ipi] = evtchn; return xen_irq_info_common_setup(info, irq, IRQT_IPI, evtchn, 0); return xen_irq_info_common_setup(info, IRQT_IPI, evtchn, 0); } static int xen_irq_info_virq_setup(unsigned cpu, unsigned irq, evtchn_port_t evtchn, unsigned virq) static int xen_irq_info_virq_setup(struct irq_info *info, unsigned int cpu, evtchn_port_t evtchn, unsigned int virq) { struct irq_info *info = info_for_irq(irq); info->u.virq = virq; per_cpu(virq_to_irq, cpu)[virq] = irq; per_cpu(virq_to_irq, cpu)[virq] = info->irq; return xen_irq_info_common_setup(info, irq, IRQT_VIRQ, evtchn, 0); return xen_irq_info_common_setup(info, IRQT_VIRQ, evtchn, 0); } static int xen_irq_info_pirq_setup(unsigned irq, evtchn_port_t evtchn, unsigned pirq, unsigned gsi, uint16_t domid, unsigned char flags) static int xen_irq_info_pirq_setup(struct irq_info *info, evtchn_port_t evtchn, unsigned int pirq, unsigned int gsi, uint16_t domid, unsigned char flags) { struct irq_info *info = info_for_irq(irq); info->u.pirq.pirq = pirq; info->u.pirq.gsi = gsi; info->u.pirq.domid = domid; info->u.pirq.flags = flags; return xen_irq_info_common_setup(info, irq, IRQT_PIRQ, evtchn, 0); return xen_irq_info_common_setup(info, IRQT_PIRQ, evtchn, 0); } static void xen_irq_info_cleanup(struct irq_info *info) Loading Loading @@ -946,7 +924,6 @@ static void disable_pirq(struct irq_data *data) int xen_irq_from_gsi(unsigned gsi) { int irq; struct irq_info *info; list_for_each_entry(info, &xen_irq_list_head, list) { Loading Loading @@ -977,20 +954,22 @@ static void __unbind_from_irq(struct irq_info *info, unsigned int irq) return; } evtchn = info->evtchn; if (VALID_EVTCHN(evtchn)) { unsigned int cpu = cpu_from_irq(irq); unsigned int cpu = info->cpu; struct xenbus_device *dev; if (!info->is_static) xen_evtchn_close(evtchn); close_evtchn = true; switch (type_from_irq(irq)) { switch (info->type) { case IRQT_VIRQ: per_cpu(virq_to_irq, cpu)[virq_from_irq(irq)] = -1; per_cpu(virq_to_irq, cpu)[virq_from_irq(info)] = -1; break; case IRQT_IPI: per_cpu(ipi_to_irq, cpu)[ipi_from_irq(irq)] = -1; per_cpu(ipi_to_evtchn, cpu)[ipi_from_irq(irq)] = 0; per_cpu(ipi_to_irq, cpu)[ipi_from_irq(info)] = -1; per_cpu(ipi_to_evtchn, cpu)[ipi_from_irq(info)] = 0; break; case IRQT_EVTCHN: dev = info->u.interdomain; Loading Loading @@ -1640,10 +1619,11 @@ EXPORT_SYMBOL_GPL(evtchn_get); void evtchn_put(evtchn_port_t evtchn) { int irq = get_evtchn_to_irq(evtchn); if (WARN_ON(irq == -1)) struct irq_info *info = evtchn_to_info(evtchn); if (WARN_ON(!info)) return; unbind_from_irq(irq); unbind_from_irq(info->irq); } EXPORT_SYMBOL_GPL(evtchn_put); Loading
kernel/trace/trace_events.c +1 −1 Original line number Diff line number Diff line Loading @@ -1013,7 +1013,7 @@ void event_file_put(struct trace_event_file *file) static void remove_event_file_dir(struct trace_event_file *file) { eventfs_remove(file->ef); eventfs_remove_dir(file->ei); list_del(&file->list); remove_subsystem(file->system); free_event_filter(file->filter); Loading