On Tue, Jul 17, 2012 at 4:38 AM, Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> wrote: > On Tue, 2012-07-17 at 18:03 +0800, Ram Pai wrote: >> Lets say we passed that 'type' flag to size the minimum >> alignment constraints for that b_res. And window_alignment(bus, >> type) of your platform used that 'type' information to >> determine whether to use the alignment constraints of 32-bit >> window or 64-bit window. >> >> However, later when the b_res is actually allocated a resource, >> the pci_assign_resource() has no idea whether to allocate 32-bit >> window resource or 64-bit window resource, because the 'type' >> information is not captured anywhere in b_res. >> >> You would basically have a disconnect between what is sized and >> what is allocated. Unless offcourse you pass that 'type' to >> the b_res->flags, which is currently not the case. > > Right, we ideally would need the core to query the alignment once per > "apertures" it tries as a candidate to allocate a given resource... but > that's for later. > > For now we can probably live with giving out the max of the minimum > alignment we support for M64 and our M32 segment size. We already know the aperture we're proposing to allocate from (the result of find_free_bus_resource()), don't we? What if we passed it to pcibios_window_alignment() along with the struct pci_bus *, e.g.: resource_size_t pcibios_window_alignment(struct pci_bus *bus, struct resource *window) -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html