> -----Original Message----- > From: Paolo Bonzini [mailto:pbonzini@xxxxxxxxxx] > Sent: Friday, July 03, 2015 3:06 PM > To: Wu, Feng; Eric Auger; eric.auger@xxxxxx; > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; kvmarm@xxxxxxxxxxxxxxxxxxxxx; > kvm@xxxxxxxxxxxxxxx; christoffer.dall@xxxxxxxxxx; marc.zyngier@xxxxxxx; > alex.williamson@xxxxxxxxxx; avi.kivity@xxxxxxxxx; mtosatti@xxxxxxxxxx; > joro@xxxxxxxxxx; b.reynal@xxxxxxxxxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx; patches@xxxxxxxxxx > Subject: Re: [RFC 12/17] irq: bypass: Extend skeleton for ARM forwarding > control > > > > On 03/07/2015 09:00, Wu, Feng wrote: > >>> > > struct irq_bypass_consumer { > >>> > > struct list_head node; > >>> > > void *token; > >>> > > + unsigned irq; /*got from producer when registered*/ > >>> > > void (*add_producer)(struct irq_bypass_producer *, > >>> > > struct irq_bypass_consumer *); > >>> > > void (*del_producer)(struct irq_bypass_producer *, > >>> > > struct irq_bypass_consumer *); > >>> > > + void (*update)(struct irq_bypass_consumer *); > >>> > > }; > >>> > > > >>> > > 'update' is used to update the IRTE, while irq is initialized when > >>> > > registered, which is used to find the right IRTE. > >> > > >> > Feel free to add "update" in your PI patches. I am not sure if "irq" > >> > belongs here or in the containing struct. You can play with both and > >> > submit the version that looks better to you. > > Thanks for your review, Paolo. In my understanding, irq comes from > > the producer side, while gsi belongs to the consumer, so we need > > to get the irq from the producer somewhere. I am not sure adding > > irq here is the good way, but what I need is in the 'update' function, > > I have irq, gsi in hand. :) > > It's difficult to say without seeing the patches... The IRQ is stored > in the producer already with Eric's changes. If you need to store the > old IRQ value, because "update" needs to do something with it, then I > think "irq" belongs in the container struct. > > Perhaps "update" needs to have a producer argument as well? I also consider this method, basically, I will call 'update' in irqfd_update(), but seems I need do extra things to get the producer structure (such as, iterate the producer list to find the one with the same 'token') before calling 'update' from consumer side. I am not sure it is worth doing that way. Thanks, Feng > > Paolo -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html