aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-06-05 10:22:06 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2015-06-05 10:22:06 -0700
commit456fdb267377b88fa37abf60fcbd9bfaa813bf1f (patch)
treee61e262e78e0dfe3ccd6cd4589c9361d116796c1 /drivers
parentMerge tag 'sound-4.1-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound (diff)
parentPCI: Preserve resource size during alignment reordering (diff)
downloadlinux-dev-456fdb267377b88fa37abf60fcbd9bfaa813bf1f.tar.xz
linux-dev-456fdb267377b88fa37abf60fcbd9bfaa813bf1f.zip
Merge tag 'pci-v4.1-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
Pull PCI fixes from Bjorn Helgaas: "Resource management - Fix IOV sorting by alignment (Wei Yang) - Preserve resource size during alignment reordering (Yinghai Lu) Miscellaneous - MAINTAINERS: Add Pratyush for SPEAr13xx and DesignWare PCIe (Pratyush Anand)" * tag 'pci-v4.1-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: PCI: Preserve resource size during alignment reordering PCI: Fix IOV resource sorting by alignment requirement MAINTAINERS: Add Pratyush Anand as SPEAr13xx and DesignWare PCIe maintainer
Diffstat (limited to 'drivers')
-rw-r--r--drivers/pci/setup-bus.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 4fd0cacf7ca0..508cc56130e3 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -428,16 +428,19 @@ static void __assign_resources_sorted(struct list_head *head,
* consistent.
*/
if (add_align > dev_res->res->start) {
+ resource_size_t r_size = resource_size(dev_res->res);
+
dev_res->res->start = add_align;
- dev_res->res->end = add_align +
- resource_size(dev_res->res);
+ dev_res->res->end = add_align + r_size - 1;
list_for_each_entry(dev_res2, head, list) {
align = pci_resource_alignment(dev_res2->dev,
dev_res2->res);
- if (add_align > align)
+ if (add_align > align) {
list_move_tail(&dev_res->list,
&dev_res2->list);
+ break;
+ }
}
}