@@ -134,6 +134,7 @@ static void pdev_sort_resources(struct pci_dev *dev, struct list_head *head)
134134 int i ;
135135
136136 pci_dev_for_each_resource (dev , r , i ) {
137+ const char * r_name = pci_resource_name (dev , i );
137138 struct pci_dev_resource * dev_res , * tmp ;
138139 resource_size_t r_align ;
139140 struct list_head * n ;
@@ -146,8 +147,8 @@ static void pdev_sort_resources(struct pci_dev *dev, struct list_head *head)
146147
147148 r_align = pci_resource_alignment (dev , r );
148149 if (!r_align ) {
149- pci_warn (dev , "BAR %d: %pR has bogus alignment \n" ,
150- i , r );
150+ pci_warn (dev , "%s %pR: alignment must not be zero \n" ,
151+ r_name , r );
151152 continue ;
152153 }
153154
@@ -246,8 +247,7 @@ static void reassign_resources_sorted(struct list_head *realloc_head,
246247 add_size = add_res -> add_size ;
247248 align = add_res -> min_align ;
248249 if (!resource_size (res )) {
249- res -> start = align ;
250- res -> end = res -> start + add_size - 1 ;
250+ resource_set_range (res , align , add_size );
251251 if (pci_assign_resource (add_res -> dev , idx ))
252252 reset_resource (res );
253253 } else {
@@ -938,8 +938,7 @@ static void pbus_size_io(struct pci_bus *bus, resource_size_t min_size,
938938 return ;
939939 }
940940
941- b_res -> start = min_align ;
942- b_res -> end = b_res -> start + size0 - 1 ;
941+ resource_set_range (b_res , min_align , size0 );
943942 b_res -> flags |= IORESOURCE_STARTALIGN ;
944943 if (bus -> self && size1 > size0 && realloc_head ) {
945944 add_to_list (realloc_head , bus -> self , b_res , size1 - size0 ,
@@ -1202,8 +1201,7 @@ static void pci_bus_size_cardbus(struct pci_bus *bus,
12021201 * Reserve some resources for CardBus. We reserve a fixed amount
12031202 * of bus space for CardBus bridges.
12041203 */
1205- b_res -> start = pci_cardbus_io_size ;
1206- b_res -> end = b_res -> start + pci_cardbus_io_size - 1 ;
1204+ resource_set_range (b_res , pci_cardbus_io_size , pci_cardbus_io_size );
12071205 b_res -> flags |= IORESOURCE_IO | IORESOURCE_STARTALIGN ;
12081206 if (realloc_head ) {
12091207 b_res -> end -= pci_cardbus_io_size ;
@@ -1215,8 +1213,7 @@ static void pci_bus_size_cardbus(struct pci_bus *bus,
12151213 b_res = & bridge -> resource [PCI_CB_BRIDGE_IO_1_WINDOW ];
12161214 if (b_res -> parent )
12171215 goto handle_b_res_2 ;
1218- b_res -> start = pci_cardbus_io_size ;
1219- b_res -> end = b_res -> start + pci_cardbus_io_size - 1 ;
1216+ resource_set_range (b_res , pci_cardbus_io_size , pci_cardbus_io_size );
12201217 b_res -> flags |= IORESOURCE_IO | IORESOURCE_STARTALIGN ;
12211218 if (realloc_head ) {
12221219 b_res -> end -= pci_cardbus_io_size ;
@@ -1249,8 +1246,8 @@ static void pci_bus_size_cardbus(struct pci_bus *bus,
12491246 * Otherwise, allocate one region of twice the size.
12501247 */
12511248 if (ctrl & PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 ) {
1252- b_res -> start = pci_cardbus_mem_size ;
1253- b_res -> end = b_res -> start + pci_cardbus_mem_size - 1 ;
1249+ resource_set_range ( b_res , pci_cardbus_mem_size ,
1250+ pci_cardbus_mem_size ) ;
12541251 b_res -> flags |= IORESOURCE_MEM | IORESOURCE_PREFETCH |
12551252 IORESOURCE_STARTALIGN ;
12561253 if (realloc_head ) {
@@ -1267,8 +1264,7 @@ static void pci_bus_size_cardbus(struct pci_bus *bus,
12671264 b_res = & bridge -> resource [PCI_CB_BRIDGE_MEM_1_WINDOW ];
12681265 if (b_res -> parent )
12691266 goto handle_done ;
1270- b_res -> start = pci_cardbus_mem_size ;
1271- b_res -> end = b_res -> start + b_res_3_size - 1 ;
1267+ resource_set_range (b_res , pci_cardbus_mem_size , b_res_3_size );
12721268 b_res -> flags |= IORESOURCE_MEM | IORESOURCE_STARTALIGN ;
12731269 if (realloc_head ) {
12741270 b_res -> end -= b_res_3_size ;
@@ -1847,7 +1843,7 @@ static void adjust_bridge_window(struct pci_dev *bridge, struct resource *res,
18471843 return ;
18481844 }
18491845
1850- res -> end = res -> start + new_size - 1 ;
1846+ resource_set_size ( res , new_size ) ;
18511847
18521848 /* If the resource is part of the add_list, remove it now */
18531849 if (add_list )
@@ -1899,6 +1895,9 @@ static void remove_dev_resources(struct pci_dev *dev, struct resource *io,
18991895 }
19001896}
19011897
1898+ #define ALIGN_DOWN_IF_NONZERO (addr , align ) \
1899+ ((align) ? ALIGN_DOWN((addr), (align)) : (addr))
1900+
19021901/*
19031902 * io, mmio and mmio_pref contain the total amount of bridge window space
19041903 * available. This includes the minimal space needed to cover all the
@@ -2010,8 +2009,7 @@ static void pci_bus_distribute_available_resources(struct pci_bus *bus,
20102009 * what is available).
20112010 */
20122011 align = pci_resource_alignment (dev , res );
2013- io .end = align ? io .start + ALIGN_DOWN (io_per_b , align ) - 1
2014- : io .start + io_per_b - 1 ;
2012+ resource_set_size (& io , ALIGN_DOWN_IF_NONZERO (io_per_b , align ));
20152013
20162014 /*
20172015 * The x_per_b holds the extra resource space that can be
@@ -2023,15 +2021,14 @@ static void pci_bus_distribute_available_resources(struct pci_bus *bus,
20232021
20242022 res = & dev -> resource [PCI_BRIDGE_MEM_WINDOW ];
20252023 align = pci_resource_alignment (dev , res );
2026- mmio . end = align ? mmio . start + ALIGN_DOWN ( mmio_per_b , align ) - 1
2027- : mmio . start + mmio_per_b - 1 ;
2024+ resource_set_size ( & mmio ,
2025+ ALIGN_DOWN_IF_NONZERO ( mmio_per_b , align )) ;
20282026 mmio .start -= resource_size (res );
20292027
20302028 res = & dev -> resource [PCI_BRIDGE_PREF_MEM_WINDOW ];
20312029 align = pci_resource_alignment (dev , res );
2032- mmio_pref .end = align ? mmio_pref .start +
2033- ALIGN_DOWN (mmio_pref_per_b , align ) - 1
2034- : mmio_pref .start + mmio_pref_per_b - 1 ;
2030+ resource_set_size (& mmio_pref ,
2031+ ALIGN_DOWN_IF_NONZERO (mmio_pref_per_b , align ));
20352032 mmio_pref .start -= resource_size (res );
20362033
20372034 pci_bus_distribute_available_resources (b , add_list , io , mmio ,
0 commit comments