On Wed, Nov 23 2022 at 07:57, Kevin Tian wrote: >> From: Thomas Gleixner <tglx@xxxxxxxxxxxxx> >> + * One solution is to let the root domain handle the initialization that's >> + * why there is the @domain and the @msi_parent_domain pointer. > > This is the part which I don't quite understand (sorry with limited knowledge > in this area). > > In concept a hierarchical model has restrictions added up when moving > down to lower layers i.e. presumably the root domain decides the minimal > supported capabilities. In this case there is no need of a real parent pointer > as long as every domain in the stack incrementally adds its restrictions to > info->flags. > > I can see why this is required for x86 given that MULTI_MSI is supported > only with IR. and we cannot make vector domain inclusively claiming > MULTI_MSI since it's completely broken when the vector domain becomes > the parent itself, in absence of IR. > > Just be curious whether this intermediate-parent-deciding-restrictions > is generic instead of x86 specific, e.g. is it possible to have a 4-layers > hierarchy where the root parent wants to check both two intermediate > parents? Sure. Nothing prevents you from doing so: dom4: .init... = dom4_init dom4_init() do_stuff() invoke parent init dom3: .init... = parent_init dom2: .init... = dom2_init dom2_init() do_stuff() invoke parent init .... See? Thanks, tglx