From: Huang Ying <ying.huang@intel.com>
To: Cliff Wickman <cpw@sgi.com>
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com
Subject: Re: [PATCH] x86: efi vendor_reserved memory type
Date: Mon, 22 Sep 2008 14:16:00 +0800 [thread overview]
Message-ID: <1222064160.23099.4.camel@yhuang-dev.sh.intel.com> (raw)
In-Reply-To: <E1KgfWE-0006lU-7s@eag09.americas.sgi.com>
[-- Attachment #1: Type: text/plain, Size: 3242 bytes --]
Hi, Cliff,
Why do you need this? Why not just set the memory area as ordinary
RESERVED? And use other method for these special devices to find out
these memory area (such as struct setup_data)?
Best Regards,
Huang Ying
On Fri, 2008-09-19 at 20:55 +0800, Cliff Wickman wrote:
> From: Cliff Wickman <cpw@sgi.com>
>
> Add an EFI_VENDOR_RESERVED memory type.
> This supports memory available only to special devices. Such memory
> will
> not be used as general RAM by the OS.
>
> And add a method for a device driver to locate that memory. The walk()
> function scans the EFI memory map and does a callback to a specified
> function for each memory area of a specified type.
> efi_memmap_walk_vr() is made available for a module to scan for
> type EFI_VENDOR_RESERVED.
>
> A UV driver will be posted later that will use these routines.
>
> Diffed against 2.6.27-rc1-mm1-dirty
>
> Signed-off-by: Cliff Wickman <cpw@sgi.com>
> ---
> arch/x86/kernel/efi.c | 36 ++++++++++++++++++++++++++++++++++++
> include/linux/efi.h | 3 ++-
> 2 files changed, 38 insertions(+), 1 deletion(-)
>
> Index: linux/arch/x86/kernel/efi.c
> ===================================================================
> --- linux.orig/arch/x86/kernel/efi.c
> +++ linux/arch/x86/kernel/efi.c
> @@ -568,3 +568,39 @@ u64 efi_mem_attributes(unsigned long phy
> }
> return 0;
> }
> +
> +static void
> +walk(efi_freemem_callback_t callback, void *arg, int type)
> +{
> + efi_memory_desc_t *md;
> + void *p;
> + int size;
> +
> + /*
> + * memmap.map is zeroed in efi_enter_virtual_mode()
> + * but we can use the physical address (phys_map)
> + */
> + size = memmap.nr_map*memmap.desc_size;
> + for (p = memmap.phys_map; p < memmap.phys_map+size;
> + p += memmap.desc_size)
> {
> + md = (efi_memory_desc_t *)__va(p);
> + if (md->type != type)
> + continue;
> + if ((*callback)(md->phys_addr,
> + md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT)
> - 1,
> + arg) < 0)
> + return;
> + }
> +}
> +
> +/*
> + * Walk the EFI memory map and call "callback" once for each EFI
> memory
> + * descriptor of type VENDOR_RESERVED.
> + */
> +void
> +efi_memmap_walk_vr(efi_freemem_callback_t callback, void *arg)
> +{
> + walk(callback, arg, EFI_VENDOR_RESERVED);
> +}
> +
> +EXPORT_SYMBOL_GPL(efi_memmap_walk_vr);
> Index: linux/include/linux/efi.h
> ===================================================================
> --- linux.orig/include/linux/efi.h
> +++ linux/include/linux/efi.h
> @@ -77,7 +77,8 @@ typedef struct {
> #define EFI_MEMORY_MAPPED_IO 11
> #define EFI_MEMORY_MAPPED_IO_PORT_SPACE 12
> #define EFI_PAL_CODE 13
> -#define EFI_MAX_MEMORY_TYPE 14
> +#define EFI_VENDOR_RESERVED 14
> +#define EFI_MAX_MEMORY_TYPE 15
>
> /* Attribute values: */
> #define EFI_MEMORY_UC ((u64)0x0000000000000001ULL) /*
> uncached */
>
>
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
next prev parent reply other threads:[~2008-09-22 6:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-19 12:55 Cliff Wickman
2008-09-22 6:16 ` Huang Ying [this message]
-- strict thread matches above, loose matches on Subject: below --
2008-09-11 14:13 Cliff Wickman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1222064160.23099.4.camel@yhuang-dev.sh.intel.com \
--to=ying.huang@intel.com \
--cc=cpw@sgi.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®