Hi everyone,

On 04/10/2012 08:12 PM, Sergei Trofimovich wrote:
On Mon, 09 Apr 2012 22:28:28 +0100
Ian Campbell<[email protected]>  wrote:

On Sun, 2012-04-08 at 11:59 +0300, Sergei Trofimovich wrote:
In order to make the box boot I had to set:
     CONFIG_EMBEDDED=y
     # CONFIG_ARM_PATCH_PHYS_VIRT is not set
    CONFIG_PHYS_OFFSET=0x0

Do you have an idea why it does not boot anymore by default?

There is a u-boot commit which fixes this issue:

commit 679530278d5a79d34e356ad2d452f4400953bfc2
Author: Michael Walle<[[email protected]]>
Date:   Mon Feb 6 22:42:10 2012 +0530

     arm, arm-kirkwood: disable l2c before linux boot

     The decompressor expects the L2 cache to be disabled. This fixes booting
     some kernels, which have CONFIG_ARM_PATCH_PHYS_VIRT enabled.

     Signed-off-by: Michael Walle<[email protected]>
     Acked-by: Prafulla Wadaskar<[email protected]>
     Cc: Albert ARIBAUD<[email protected]>
     Cc: Prafulla Wadaskar<[email protected]>
     Cc: Wolfgang Denk<[email protected]>

Thank you, Ian. Updating u-boot helped!

Sorry for the noise.

I guess if updating u-boot is not an option, there's no other way around it than disabling CONFIG_ARM_PATCH_PHYS_VIRT altogether.

Could someone (Russell?) simply state what the consequences are of disabling such option? (Or, conversely, what its advantages are?) Only reference I found is the original commit, but I couldn't really understand what it does (or to what purpose), see at the bottom.

Thank you very much!
Gerlando

commit dc21af99fadcfa0ae65b52fd0895f85824f0c288
Author: Russell King <[email protected]>
Date:   Tue Jan 4 19:09:43 2011 +0000

    ARM: P2V: introduce phys_to_virt/virt_to_phys runtime patching

    This idea came from Nicolas, Eric Miao produced an initial version,
    which was then rewritten into this.

    Patch the physical to virtual translations at runtime.  As we modify
    the code, this makes it incompatible with XIP kernels, but allows us
    to achieve this with minimal loss of performance.

    As many translations are of the form:

        physical = virtual + (PHYS_OFFSET - PAGE_OFFSET)
        virtual = physical - (PHYS_OFFSET - PAGE_OFFSET)

    we generate an 'add' instruction for __virt_to_phys(), and a 'sub'
instruction for __phys_to_virt(). We calculate at run time (PHYS_OFFSET - PAGE_OFFSET) by comparing the address prior to MMU initialization with
    where it should be once the MMU has been initialized, and place this
    constant into the above add/sub instructions.

    Once we have (PHYS_OFFSET - PAGE_OFFSET), we can calculate the real
    PHYS_OFFSET as PAGE_OFFSET is a build-time constant, and save this for
    the C-mode PHYS_OFFSET variable definition to use.

    At present, we are unable to support Realview with Sparsemem enabled
    as this uses a complex mapping function, and MSM as this requires a
    constant which will not fit in our math instruction.

    Add a module version magic string for this feature to prevent
    incompatible modules being loaded.

    Tested-by: Tony Lindgren <[email protected]>
    Reviewed-by: Nicolas Pitre <[email protected]>
    Tested-by: Nicolas Pitre <[email protected]>
    Signed-off-by: Russell King <[email protected]>


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to