setup-res.c (879f99ef2c4c05d9a7f0a67a05f1415663119825) setup-res.c (5b28541552ef5eeffc41d6936105f38c2508e566)
1/*
2 * drivers/pci/setup-res.c
3 *
4 * Extruded from code written by
5 * Dave Rusling (david.rusling@reo.mts.dec.com)
6 * David Mosberger (davidm@cs.arizona.edu)
7 * David Miller (davem@redhat.com)
8 *

--- 197 unchanged lines hidden (view full) ---

206 struct resource *res = dev->resource + resno;
207 resource_size_t min;
208 int ret;
209
210 min = (res->flags & IORESOURCE_IO) ? PCIBIOS_MIN_IO : PCIBIOS_MIN_MEM;
211
212 /* First, try exact prefetching match.. */
213 ret = pci_bus_alloc_resource(bus, res, size, align, min,
1/*
2 * drivers/pci/setup-res.c
3 *
4 * Extruded from code written by
5 * Dave Rusling (david.rusling@reo.mts.dec.com)
6 * David Mosberger (davidm@cs.arizona.edu)
7 * David Miller (davem@redhat.com)
8 *

--- 197 unchanged lines hidden (view full) ---

206 struct resource *res = dev->resource + resno;
207 resource_size_t min;
208 int ret;
209
210 min = (res->flags & IORESOURCE_IO) ? PCIBIOS_MIN_IO : PCIBIOS_MIN_MEM;
211
212 /* First, try exact prefetching match.. */
213 ret = pci_bus_alloc_resource(bus, res, size, align, min,
214 IORESOURCE_PREFETCH,
214 IORESOURCE_PREFETCH | IORESOURCE_MEM_64,
215 pcibios_align_resource, dev);
216
215 pcibios_align_resource, dev);
216
217 if (ret < 0 && (res->flags & IORESOURCE_PREFETCH)) {
217 if (ret < 0 &&
218 (res->flags & (IORESOURCE_PREFETCH | IORESOURCE_MEM_64)) ==
219 (IORESOURCE_PREFETCH | IORESOURCE_MEM_64)) {
218 /*
219 * That failed.
220 *
220 /*
221 * That failed.
222 *
223 * Try 32bit pref
224 */
225 ret = pci_bus_alloc_resource(bus, res, size, align, min,
226 IORESOURCE_PREFETCH,
227 pcibios_align_resource, dev);
228 }
229
230 if (ret < 0 &&
231 (res->flags & (IORESOURCE_PREFETCH | IORESOURCE_MEM_64))) {
232 /*
233 * That failed.
234 *
221 * But a prefetching area can handle a non-prefetching
222 * window (it will just not perform as well).
235 * But a prefetching area can handle a non-prefetching
236 * window (it will just not perform as well).
237 *
238 * Also can put 64bit under 32bit range. (below 4g).
223 */
224 ret = pci_bus_alloc_resource(bus, res, size, align, min, 0,
225 pcibios_align_resource, dev);
226 }
227 return ret;
228}
229
230static int _pci_assign_resource(struct pci_dev *dev, int resno,

--- 140 unchanged lines hidden ---
239 */
240 ret = pci_bus_alloc_resource(bus, res, size, align, min, 0,
241 pcibios_align_resource, dev);
242 }
243 return ret;
244}
245
246static int _pci_assign_resource(struct pci_dev *dev, int resno,

--- 140 unchanged lines hidden ---