[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1 1/3] arm/pci: Add pci-scan boot argument
On 01.08.2025 11:22, Mykyta Poturai wrote: > From: Edward Pickup <Edward.Pickup@xxxxxxx> > > This patch adds a Xen boot arguments that, if enabled, causes a call to > existing code to scan pci devices enumerated by the firmware. > > This patch also makes an existing debug function viewable outside its > translation unit, and uses this to dump the PCI devices found. > The debug message is controlled by config DEBUG. > > Additionally, this patch modifies segment loading to ensure that PCI > devices on other segments are properly found. > > This will be needed ahead of dom0less support for pci passthrough on > arm. > > Signed-off-by: Luca Fancellu <luca.fancellu@xxxxxxx> > Signed-off-by: Edward Pickup <Edward.Pickup@xxxxxxx> Considering the From: above and this order of S-o-b: Who is it really that was the original author here? > --- a/xen/arch/arm/include/asm/pci.h > +++ b/xen/arch/arm/include/asm/pci.h > @@ -23,6 +23,7 @@ > #define pci_to_dev(pcidev) (&(pcidev)->arch.dev) > > extern bool pci_passthrough_enabled; > +extern bool pci_scan_enabled; With the variable non-static, ... > @@ -128,6 +129,11 @@ static always_inline bool > is_pci_passthrough_enabled(void) > return pci_passthrough_enabled; > } > > +static inline bool is_pci_scan_enabled(void) > +{ > + return pci_scan_enabled; > +} > + > void arch_pci_init_pdev(struct pci_dev *pdev); > > int pci_get_new_domain_nr(void); > @@ -155,6 +161,11 @@ bool arch_pci_device_physdevop(void); > > #else /*!CONFIG_HAS_PCI*/ > > +static inline bool is_pci_scan_enabled(void) > +{ > + return false; > +} ... what's the point of the wrappers? Constrain the variable as such to HAS_PCI=y, and use "#define pci_scan_enabled false" in the opposite case. Just like we do elsewhere in a number of cases. > --- a/xen/arch/arm/pci/pci.c > +++ b/xen/arch/arm/pci/pci.c > @@ -91,8 +91,13 @@ bool arch_pci_device_physdevop(void) > bool __read_mostly pci_passthrough_enabled; > boolean_param("pci-passthrough", pci_passthrough_enabled); > > +/* By default pci scan is disabled. */ > +bool __read_mostly pci_scan_enabled; __ro_after_init? > +boolean_param("pci-scan", pci_scan_enabled); > + > static int __init pci_init(void) > { > + int ret; > /* Nit: Blank line please between declaration(s) and statement(s). > @@ -104,9 +109,26 @@ static int __init pci_init(void) > panic("Could not initialize PCI segment 0\n"); > > if ( acpi_disabled ) > - return dt_pci_init(); > + ret = dt_pci_init(); > else > - return acpi_pci_init(); > + ret = acpi_pci_init(); > + > + if ( ret < 0 ) > + return ret; > + > + if ( is_pci_scan_enabled() ) > + { > + ret = scan_pci_devices(); > + > + if ( ret < 0 ) > + return ret; > + > +#ifdef DEBUG > + dump_pci_devices('c'); > +#endif If I was a maintainer of this code, I would request such to be dropped. Or if there was a good reason to have such, I think it would want to be arch-independent. > --- a/xen/drivers/passthrough/pci.c > +++ b/xen/drivers/passthrough/pci.c > @@ -1384,7 +1384,7 @@ static int cf_check _dump_pci_devices(struct pci_seg > *pseg, void *arg) > return 0; > } > > -static void cf_check dump_pci_devices(unsigned char ch) > +void cf_check dump_pci_devices(unsigned char ch) Note the cf_check here. It, for some reason, ... > --- a/xen/include/xen/pci.h > +++ b/xen/include/xen/pci.h > @@ -217,6 +217,7 @@ static always_inline bool pcidevs_trylock(void) > bool pci_known_segment(u16 seg); > bool pci_device_detect(u16 seg, u8 bus, u8 dev, u8 func); > int scan_pci_devices(void); > +void dump_pci_devices(unsigned char ch); ... needs reproducing on the declaration. What about x86 though? It'll end up as a non-static function with no caller outside of the defining CU, hence violating some Misra rule. Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |