lkml.org 
[lkml]   [2013]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 03/20] x86, ACPI, mm: Kill max_low_pfn_mapped
    Date
    Now we have arch_pfn_mapped array, and max_low_pfn_mapped should not
    be used anymore.

    User should use arch_pfn_mapped or just 1UL<<(32-PAGE_SHIFT) instead.

    Only user is ACPI_INITRD_TABLE_OVERRIDE, and it should not use that,
    as later accessing is using early_ioremap(). Change to try to 4G below
    and then 4G above.

    -v2: Leave alone max_low_pfn_mapped in i915 code according to tj.

    Suggested-by: H. Peter Anvin <hpa@zytor.com>
    Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: David Airlie <airlied@linux.ie>
    Cc: Jacob Shin <jacob.shin@amd.com>
    Cc: linux-acpi@vger.kernel.org
    Cc: dri-devel@lists.freedesktop.org
    ---
    arch/x86/include/asm/page_types.h | 1 -
    arch/x86/kernel/setup.c | 4 +---
    arch/x86/mm/init.c | 4 ----
    drivers/acpi/osl.c | 10 +++++++---
    4 files changed, 8 insertions(+), 11 deletions(-)

    diff --git a/arch/x86/include/asm/page_types.h b/arch/x86/include/asm/page_types.h
    index 54c9787..b012b82 100644
    --- a/arch/x86/include/asm/page_types.h
    +++ b/arch/x86/include/asm/page_types.h
    @@ -43,7 +43,6 @@

    extern int devmem_is_allowed(unsigned long pagenr);

    -extern unsigned long max_low_pfn_mapped;
    extern unsigned long max_pfn_mapped;

    static inline phys_addr_t get_max_mapped(void)
    diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
    index 1629577..e75c6e6 100644
    --- a/arch/x86/kernel/setup.c
    +++ b/arch/x86/kernel/setup.c
    @@ -113,13 +113,11 @@
    #include <asm/prom.h>

    /*
    - * max_low_pfn_mapped: highest direct mapped pfn under 4GB
    - * max_pfn_mapped: highest direct mapped pfn over 4GB
    + * max_pfn_mapped: highest direct mapped pfn
    *
    * The direct mapping only covers E820_RAM regions, so the ranges and gaps are
    * represented by pfn_mapped
    */
    -unsigned long max_low_pfn_mapped;
    unsigned long max_pfn_mapped;

    #ifdef CONFIG_DMI
    diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
    index 59b7fc4..abcc241 100644
    --- a/arch/x86/mm/init.c
    +++ b/arch/x86/mm/init.c
    @@ -313,10 +313,6 @@ static void add_pfn_range_mapped(unsigned long start_pfn, unsigned long end_pfn)
    nr_pfn_mapped = clean_sort_range(pfn_mapped, E820_X_MAX);

    max_pfn_mapped = max(max_pfn_mapped, end_pfn);
    -
    - if (start_pfn < (1UL<<(32-PAGE_SHIFT)))
    - max_low_pfn_mapped = max(max_low_pfn_mapped,
    - min(end_pfn, 1UL<<(32-PAGE_SHIFT)));
    }

    bool pfn_range_is_mapped(unsigned long start_pfn, unsigned long end_pfn)
    diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
    index 586e7e9..c08cdb6 100644
    --- a/drivers/acpi/osl.c
    +++ b/drivers/acpi/osl.c
    @@ -624,9 +624,13 @@ void __init acpi_initrd_override(void *data, size_t size)
    if (table_nr == 0)
    return;

    - acpi_tables_addr =
    - memblock_find_in_range(0, max_low_pfn_mapped << PAGE_SHIFT,
    - all_tables_size, PAGE_SIZE);
    + /* under 4G at first, then above 4G */
    + acpi_tables_addr = memblock_find_in_range(0, (1ULL<<32) - 1,
    + all_tables_size, PAGE_SIZE);
    + if (!acpi_tables_addr)
    + acpi_tables_addr = memblock_find_in_range(0,
    + ~(phys_addr_t)0,
    + all_tables_size, PAGE_SIZE);
    if (!acpi_tables_addr) {
    WARN_ON(1);
    return;
    --
    1.7.10.4


    \
     
     \ /
      Last update: 2013-03-10 08:41    [W:4.101 / U:1.900 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site