On Tue, 9 Jul 2024, Stewart Hildebrand wrote: > Currently, it's not possible to use the IORESOURCE_STARTALIGN flag on > x86 due to the alignment being overwritten in > pcibios_allocate_dev_resources(). Make one small change in arch/x86 to > make it work on x86. > > Signed-off-by: Stewart Hildebrand <stewart.hildebrand@xxxxxxx> > --- > RFC: We don't have enough info in this function to re-calculate the > alignment value in case of IORESOURCE_STARTALIGN. Luckily our > alignment value seems to be intact, so just don't touch it... > Alternatively, we could call pci_reassigndev_resource_alignment() > after the loop. Would that be preferable? > --- > arch/x86/pci/i386.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c > index f2f4a5d50b27..ff6e61389ec7 100644 > --- a/arch/x86/pci/i386.c > +++ b/arch/x86/pci/i386.c > @@ -283,8 +283,11 @@ static void pcibios_allocate_dev_resources(struct pci_dev *dev, int pass) > /* We'll assign a new address later */ > pcibios_save_fw_addr(dev, > idx, r->start); > - r->end -= r->start; > - r->start = 0; > + if (!(r->flags & > + IORESOURCE_STARTALIGN)) { > + r->end -= r->start; > + r->start = 0; > + } > } > } > } > As a general comment to that loop in pcibios_allocate_dev_resources() function, it would be nice to reverse some of the logic in the if conditions and use continue to limit the runaway indentation level. -- i.