[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160817070151.GC5498@dhcp-128-65.nay.redhat.com>
Date:	Wed, 17 Aug 2016 15:01:51 +0800
From:	Dave Young <dyoung@...hat.com>
To:	Alex Thorlton <athorlton@....com>
Cc:	Borislav Petkov <bp@...en8.de>,
	Matt Fleming <matt@...eblueprint.co.uk>,
	linux-kernel@...r.kernel.org, Russ Anderson <rja@....com>,
	Dimitri Sivanich <sivanich@....com>,
	Mike Travis <travis@....com>,
	Thomas Gleixner <tglx@...utronix.de>,
	Ingo Molnar <mingo@...hat.com>,
	"H. Peter Anvin" <hpa@...or.com>, x86@...nel.org,
	linux-efi@...r.kernel.org
Subject: Re: [PATCH] Map in physical addresses in efi_map_region_fixed
> > Why do you guys need the physical mapping all of a sudden?
> 
> It's not that we need it all of the sudden, necessarily, it's just that
> we've had to make other changes to make things work with the new,
> (almost) completely isolated, EFI page tables.  We ended up choosing the
> lesser of two evils, and have decided to temporarily rely on the
> physical address of our runtime code, instead of continuing to rely on
> EFI_OLD_MEMMAP.
In efi_map_region, there is already mapped md->phys_addr for broken
firmware. SGI still need EFI_OLD_MEMMAP? I means in 1st kernel instead
of kexec kernel.
void __init efi_map_region(efi_memory_desc_t *md)
{
        unsigned long size = md->num_pages << PAGE_SHIFT;
        u64 pa = md->phys_addr;
        if (efi_enabled(EFI_OLD_MEMMAP))
                return old_map_region(md);
        /*
         * Make sure the 1:1 mappings are present as a catch-all for
         * b0rked
         * firmware which doesn't update all internal pointers after
         * switching
         * to virtual mode and would otherwise crap on us.
         */
        __map_region(md, md->phys_addr);
[snip]
Thanks
Dave
Powered by blists - more mailing lists
 
