Messages in this thread | | | Date | Thu, 16 Aug 2012 18:28:08 +0800 | From | Hanjun Guo <> | Subject | Re: [BUGFIX PATCH][RESEND] kexec & iosapic: kexec oops when iosapic was removed |
| |
On 2012/8/13 10:54, Luck, Tony wrote: >> vec = irq_to_vector(irq); >> list_for_each_entry(rte, &info->rtes, >> rte_list) { >> + if (rte->refcnt == NO_REF_RTE) >> + continue; >> + >> iosapic_write(rte->iosapic, >> IOSAPIC_RTE_LOW(rte->rte_index), >> IOSAPIC_MASK|vec); > > This will work - but is it papering over a problem when you removed the > iosapic? Should we really have removed this "rte" from rte_list when the > iosapic was removed? > > -Tony >
Hi Tony, Thanks for your comments, and sorry for the late reply.
We only set rte->refcnt to NO_REF_RTE if no device attach to this RTE when unregister a GSI, and increase the rte->refcnt if the RTE is already existing when register a GSI, so "rte" will not removed from rte_list when the iosapic is removed.
Actually, the rte_list will keep static when remove/add a existing iosapic after boot up.
Should we remove the RTE from the rte_list? if yes, we will have more to do than this patch.
Thanks Hanjun Guo
| |