lkml.org 
[lkml]   [2008]   [Feb]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] reserve RAM below PHYSICAL_START
    On Wed, 27 Feb 2008 01:33:25 +0100 Andrea Arcangeli wrote:

    > Hello,
    >
    > this patch allows to prevent linux from using the ram below
    > PHYSICAL_START.
    >
    > The "reserved RAM" can be mapped by virtualization software with to
    > create a 1:1 mapping between guest physical (bus) address and host
    > physical (bus) address. This will allow pci passthrough with DMA for
    > the guest with current production hardware that misses VT-d. The only
    > detail to take care of is the ram marked "reserved RAM failed". The
    > virtualization software must create for the guest an e820 map that
    > only includes the "reserved RAM" regions but if the guest touches
    > memory with guest physical address in the "reserved RAM failed" ranges
    > (linux guest will do that even if the ram isn't present in the e820
    > map), it should provide that as ram and map it with a not-ident
    > mapping. This should allow any linux kernel to run fine with pci
    > passthrough and hopefully any other OS too with all VT enabled
    > hardware.
    >
    >
    > Let me know if this can be merged, thanks!
    >
    >
    > Signed-off-by: Andrea Arcangeli <andrea@qumranet.com>
    >
    > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
    > --- a/arch/x86/Kconfig
    > +++ b/arch/x86/Kconfig
    > @@ -1109,8 +1109,36 @@ config CRASH_DUMP
    > (CONFIG_RELOCATABLE=y).
    > For more details see Documentation/kdump/kdump.txt
    >
    > +config RESERVE_PHYSICAL_START
    > + bool "Reserve all RAM below PHYSICAL_START (EXPERIMENTAL)"
    > + depends on !RELOCATABLE && X86_64
    > + help
    > + This makes the kernel use only RAM above __PHYSICAL_START.
    > + All memory below __PHYSICAL_START will be left unused and
    > + marked as "reserved RAM" in /proc/iomem. The few special
    > + pages that can't be relocated at addresses above
    > + __PHYSICAL_START and that can't be guaranteed to be unused
    > + by the running kernel, will be marked "reserved RAM failed"

    No comma.

    > + in /proc/iomem. Those may or may be not used by the kernel
    > + (for example smp trampoline pages would only be used if

    SMP

    > + CPU hotplug is enabled).
    > +
    > + The "reserved RAM" can be mapped by virtualization software

    Indent above with tab + 2 spaces, please.

    > + with /dev/mem to create a 1:1 mapping between guest physical
    > + (bus) address and host physical (bus) address. This will
    > + allow pci passthrough with DMA for the guest using the ram

    PCI RAM

    > + with the 1:1 mapping. The only detail to take care of is the
    > + ram marked "reserved RAM failed". The virtualization

    RAM

    > + software must create for the guest an e820 map that only
    > + includes the "reserved RAM" regions but if the guest touches
    > + memory with guest physical address in the "reserved RAM
    > + failed" ranges (linux guest will do that even if the ram

    Linux RAM

    > + isn't present in the e820 map), it should provide that as
    > + ram and map it with a non linear mapping. This should allow

    RAM non-linear

    > + any linux kernel to run fine and hopefully any other OS too.

    Linux

    > +
    > config PHYSICAL_START
    > - hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP)
    > + hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP || RESERVE_PHYSICAL_START)
    > default "0x1000000" if X86_NUMAQ
    > default "0x200000" if X86_64
    > default "0x100000"


    ---
    ~Randy


    \
     
     \ /
      Last update: 2008-02-28 00:55    [W:3.794 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site