From: Bukie Mabayoje <bukiemab@gte.net>
To: linux-ia64@vger.kernel.org
Subject: Re: IA64 memory
Date: Thu, 24 Feb 2005 18:40:58 +0000 [thread overview]
Message-ID: <421E1FBA.7FA3BC5E@gte.net> (raw)
In-Reply-To: <851caabb05020220513945437@mail.gmail.com>
Below is a sample memory map from EFI. You will see gaps between the memory types.
The GRANULE is a chunk of available memory. e.g the second line is a GRANULE 0x1000-0x6FFF
For trim_bottom refer to func trim_bottom():efi.c
For trip_top refer to func trim_top():efi.c
Type Start End # Pages Attributes
BS_data 0000000000000000-0000000000000FFF 0000000000000001 0000000000000009
available 0000000000001000-0000000000006FFF 0000000000000006 0000000000000009
BS_data 0000000000007000-0000000000008FFF 0000000000000002 0000000000000009
available 0000000000009000-0000000000081FFF 0000000000000079 0000000000000009
RT_data 0000000000082000-0000000000083FFF 0000000000000002 8000000000000009
available 0000000000084000-0000000000084FFF 0000000000000001 0000000000000009
BS_data 0000000000085000-000000000009FFFF 000000000000001B 0000000000000009
RT_code 00000000000C0000-00000000000FFFFF 0000000000000040 8000000000000009
available 0000000000100000-000000000FFBFFFF 000000000000FEC0 000000000000000B
BS_data 000000000FFC0000-000000000FFFFFFF 0000000000000040 000000000000000B
available 0000000010000000-000000007C92DFFF 000000000006C92E 000000000000000B
LoaderData 000000007C92E000-000000007C937FFF 000000000000000A 000000000000000B
LoaderCode 000000007C938000-000000007C97DFFF 0000000000000046 000000000000000B
available 000000007C97E000-000000007CE29FFF 00000000000004AC 000000000000000B
BS_data 000000007CE2A000-000000007D000FFF 00000000000001D7 000000000000000B
available 000000007D001000-000000007D01DFFF 000000000000001D 000000000000000B
BS_data 000000007D01E000-000000007D09BFFF 000000000000007E 000000000000000B
available 000000007D09C000-000000007D09CFFF 0000000000000001 000000000000000B
BS_data 000000007D09D000-000000007D37DFFF 00000000000002E1 000000000000000B
available 000000007D37E000-000000007D6FFFFF 0000000000000382 000000000000000B
BS_code 000000007D700000-000000007D77DFFF 000000000000007E 000000000000000B
available 000000007D77E000-000000007D8B5FFF 0000000000000138 000000000000000B
RT_data 000000007D8B6000-000000007D8FFFFF 000000000000004A 8000000000000009
BS_code 000000007D900000-000000007F97FFFF 0000000000002080 000000000000000B
available 000000007F980000-000000007F9FFFFF 0000000000000080 000000000000000B
RT_code 000000007FA00000-000000007FDFFFFF 0000000000000400 8000000000000009
PAL_code 000000007FE00000-000000007FE3FFFF 0000000000000040 8000000000000009
RT_code 000000007FE40000-000000007FE97FFF 0000000000000058 8000000000000009
available 000000007FE98000-000000007FED9FFF 0000000000000042 000000000000000B
RT_code 000000007FEDA000-000000007FF45FFF 000000000000006C 8000000000000009
RT_data 000000007FF46000-000000007FFFFFFF 00000000000000BA 8000000000000009
MemMapIO 00000000FE000000-00000000FEFFFFFF 0000000000001000 0000000000000001
RT_data 00000000FF000000-00000000FFFFFFFF 0000000000001000 8000000000000001
MemMapIO 00000FFFF8000000-00000FFFFBFFFFFF 0000000000004000 8000000000000001
MemPortIO 00000FFFFC000000-00000FFFFFFFFFFF 0000000000004000 8000000000000001
Vaibhav Sharma wrote:
> hi,
> Thanks for the details regarding the elilo and the memory map..
>
> Actually my task involves investigating the IA64 memory code and I had
> some more queries regarding the "efi_memmap_walk" function in efi.c.
> It would be great if I could get some help regarding this.
>
> Here is the flow of the fuction(i may be wrong in my interpretation):
>
> 1. scan all the efi memory descriptors in a "for" loop.
> 2. exclude the non-WB memory.
> 3. find the granule address (the comments in the file say that
> [granule address - non-WB memory address] gives the contigous WB
> memory). Then calculate the non-WB address.
> 4. in function "trim_bottom", it reduces the number of pages for the
> decriptor according to the granule.
> 5. recalculate the non-wb address (shift it forward??).
> 6. calls trim_top according to the " last granule address".
> 7. calculate "start" and "end" addresses for the zone, check for merging.
> 8. after moving across all the descriptors, calls "callback"
>
> Actually I am not able to understand what is a GRANULE in IA64 and how
> is it calculated, which uses the IA64_GRANULE_SIZE define.Is it
> because of the un-implemented bits in ia64..?. Also, why is that the
> granule size ("last granule size") is recalculated (trim_bottom
> earlier and trim_top now).
>
> TIA..
> ---
> vaibhav
>
next prev parent reply other threads:[~2005-02-24 18:40 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-03 4:52 IA64 memory Vaibhav Sharma
2005-02-03 6:01 ` David Mosberger
2005-02-03 7:15 ` Vaibhav Sharma
2005-02-04 2:31 ` David Mosberger
2005-02-06 6:21 ` Vaibhav Sharma
2005-02-08 18:17 ` David Mosberger
2005-02-20 11:30 ` Vaibhav Sharma
2005-02-20 15:57 ` Matthew Wilcox
2005-02-20 17:29 ` Bukie Mabayoje
2005-02-24 18:40 ` Bukie Mabayoje [this message]
2005-03-01 13:44 ` Vaibhav Sharma
2005-03-01 15:24 ` Alex Williamson
2005-03-01 15:32 ` Matthew Wilcox
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=421E1FBA.7FA3BC5E@gte.net \
--to=bukiemab@gte.net \
--cc=linux-ia64@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