On 7/10/24 10:05, Ilpo Järvinen wrote: > 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. The similar function pcibios_allocate_resources() in arch/powerpc/kernel/pci-common.c has moved some of the logic out into a separate function. I'll do the same here.