On Thu, 31 Mar 2011 08:45:39 +0200 Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net wrote:
Could you patch physmap instead to round down the requested address and round up the end of the range? Then we could just request the amount we need without having to care in each programmer driver about page size. I think somewhere in flashrom we even have rounding code for physmap, it just needs to be moved from a driver to the generic physmap.
oh. steep learning curve there. :) not because the rounding is complicated, but because i am not sure i am aware of all side effects. i guess the existing rounding code you was referring to is that in sb600spi.c?
what i can do/propose for now: change physmap_common as follows: instead of the two check including getpagesize(): - round down the physical address requested later from phys_to_virt to the nearest getpagesize()-aligned address - round up the length requested later accordingly i.e. request a physical window that is aligned to pages and includes at least the memory described by phys_addr + len - return virt_addr after adding the offset from rounding down the physical address - change nicintel_spi.c accordingly
i would rather not touch the other drivers for now. i think i know what we are doing here in theory, but i fear i would break something :)
ps: i can't fully test this, because i broke my intel nic when i tried to unsolder the flash (to add a smd zif socket for further tinkering).