[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v6 2/7] xen/arm: add pci-domain for disabled devices
Hi, Julien! On 23.11.21 19:15, Julien Grall wrote: > Hi, > > On 23/11/2021 16:44, Oleksandr Andrushchenko wrote: >> On 23.11.21 18:05, Julien Grall wrote: >>> Hi Oleksandr, >>> >>> On 23/11/2021 06:31, Oleksandr Andrushchenko wrote: >>>> >>>> >>>> On 22.11.21 19:17, Julien Grall wrote: >>>>> Hi, >>>>> >>>>> On 22/11/2021 16:23, Oleksandr Andrushchenko wrote: >>>>>> On 22.11.21 17:29, Julien Grall wrote: >>>>>>> I would prefer to go with my way. This can be refined in the future if >>>>>>> we find Device-Tree that matches what you wrote. >>>>>> Ok, so just to make it clear: >>>>>> >a PCI device would always be described as a child of the >>>>>> hostbridges. So I would rework the 'if' to also check if the parent type >>>>>> is not "pci" >>>>> >>>>> That's correct. Thank you! >>>> Ok, so how about >>>> if ( is_pci_passthrough_enabled() && dt_device_type_is_equal(node, >>>> "pci") ) >>>> { >>>> bool skip = false; >>>> >>>> /* >>>> * If the parent is also a "pci" device, then "linux,pci-domain" >>>> * should already be there, so nothing to do then. >>>> */ >>> >>> This comment is a bit confusing. >> Do you have something on your mind? > > Yes, explain that we only want to cover hostbridge (see my reply on the > previous answer). I guess this will be explained by the comment to handle_linux_pci_domain below > >>> I think what matter if the parent is a "pci" device, then the current node >>> must not be a hostbridge. So we can skip it. >> By skipping you only mean we do not need to add/assign "linux,pci-domain", >> right? > > Yes. > >>> However... >>> >>>> if ( node->parent && dt_device_type_is_equal(node->parent, >>>> "pci") ) >>>> skip = true; >>>> >>>> if ( !skip && !dt_find_property(node, "linux,pci-domain", NULL) >>>> ) >>>> { >>>> I played with a single if and it looks scary... >>> >>> ... how about introducing an helper that will return true if this node is >>> likely an hostbridge? >> This is yet a single use of such a check: why would we need a helper and >> what would that >> helper do? > > I like splitting code in multiple functions even if they are only called once > because this: > 1) keeps the functions line count small > 2) easier to understand what is the purpose of the check > > In fact, I would actually move the handling for "linux,pci-domain" in a > separate helper. Something like: > > /* > * When PCI passthrough is available we want to keep the > * "linux,pci-domain" in sync for every hostbridge. > * > * Xen may not have a driver for all the hostbridges. So we have > * to write an heuristic to detect whether a device node describes > * an hostbridge. > * > * The current heuristic assumes that a device is an hostbridge > * if the type is "pci" and then parent type is not "pci". > */ > static int handle_linux_pci_domain(struct dt_device *node) > { > if ( !is_pci_passthrough_enabled() ) > return 0; > > if ( !dt_device_type_is_equal(node, "pci") ) > return 0; > > if ( node->parent && dt_device_type_is_equal(node->parent) ) > return 0; > > if ( dt_find_property(node, "linux,pci-domain", NULL ) > return 0; > > /* Allocate and create the linux,pci-domain */ > } > I'm fine with this, will move, thanks > Cheers, > Thank you, Oleksandr
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |