public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
* IA64 memory
@ 2005-02-03  4:52 Vaibhav Sharma
  2005-02-03  6:01 ` David Mosberger
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: Vaibhav Sharma @ 2005-02-03  4:52 UTC (permalink / raw)
  To: linux-ia64

Hi,
I am investigating how linux initializes the memory in IA64 machine.
the flow, very broadly (i think) is:
**start_kernel-> setup_arch-> find_memory-> efi_memmap_walk ** ( it
does all all other things like unwind_init, efi_init, etc, inbetween).
The function efi_memmap_walk uses the "IA64_boot_param" structure to
read the memory map. I wanted to know where and how this structure is
initialized, I mean how does it access the EFI table.
Are call-backs used to initialize this structure..??..Do these
call-backs use the API's to EFI table management...?

Please do help....
TIA
--
Vaibhav Sharma.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: IA64 memory
  2005-02-03  4:52 IA64 memory Vaibhav Sharma
@ 2005-02-03  6:01 ` David Mosberger
  2005-02-03  7:15 ` Vaibhav Sharma
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: David Mosberger @ 2005-02-03  6:01 UTC (permalink / raw)
  To: linux-ia64

>>>>> On Thu, 3 Feb 2005 10:21:42 +0530, Vaibhav Sharma <vaibhav.sh@gmail.com> said:

  Vaibhav> Hi, I am investigating how linux initializes the memory in
  Vaibhav> IA64 machine.  the flow, very broadly (i think) is:
  Vaibhav> **start_kernel-> setup_arch-> find_memory-> efi_memmap_walk
  Vaibhav> ** ( it does all all other things like unwind_init,
  Vaibhav> efi_init, etc, inbetween).  The function efi_memmap_walk
  Vaibhav> uses the "IA64_boot_param" structure to read the memory
  Vaibhav> map. I wanted to know where and how this structure is
  Vaibhav> initialized, I mean how does it access the EFI table.  Are
  Vaibhav> call-backs used to initialize this structure..??..Do these
  Vaibhav> call-backs use the API's to EFI table management...?

The boot-param structure is setup by elilo.

Look for a routine called sysdeps_create_boot_params() in the elilo sources.

	--david

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: IA64 memory
  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
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Vaibhav Sharma @ 2005-02-03  7:15 UTC (permalink / raw)
  To: linux-ia64

Hi,
Thanks a lot for a quick response, I appreciate.
If you could only help me out a little more …. 

See, I need to change some of the boot parameters as read/seen by the
kernel. Once these parameters have been setup by elilo, the Kernel
must read it from these predefined areas in memory, into some of its
variables. I need to understand where this reading part happens in the
kernel. This is where I want to modify the resources, for future use
by the kernel !! I don't want to touch the elilo source, only the
kernel.

Hoping to hear from you soon.

Thanks and Regards,
Vaibhav.



On Wed, 2 Feb 2005 22:01:14 -0800, David Mosberger
<davidm@napali.hpl.hp.com> wrote:
> >>>>> On Thu, 3 Feb 2005 10:21:42 +0530, Vaibhav Sharma <vaibhav.sh@gmail.com> said:
> 
>   Vaibhav> Hi, I am investigating how linux initializes the memory in
>   Vaibhav> IA64 machine.  the flow, very broadly (i think) is:
>   Vaibhav> **start_kernel-> setup_arch-> find_memory-> efi_memmap_walk
>   Vaibhav> ** ( it does all all other things like unwind_init,
>   Vaibhav> efi_init, etc, inbetween).  The function efi_memmap_walk
>   Vaibhav> uses the "IA64_boot_param" structure to read the memory
>   Vaibhav> map. I wanted to know where and how this structure is
>   Vaibhav> initialized, I mean how does it access the EFI table.  Are
>   Vaibhav> call-backs used to initialize this structure..??..Do these
>   Vaibhav> call-backs use the API's to EFI table management...?
> 
> The boot-param structure is setup by elilo.
> 
> Look for a routine called sysdeps_create_boot_params() in the elilo sources.
> 
>         --david
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: IA64 memory
  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
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: David Mosberger @ 2005-02-04  2:31 UTC (permalink / raw)
  To: linux-ia64

>>>>> On Thu, 3 Feb 2005 12:33:40 +0530, Vaibhav Sharma <vaibhav.sh@gmail.com> said:

  Vaibhav> Hi, Thanks a lot for a quick response, I appreciate.  If
  Vaibhav> you could only help me out a little more ^[$,1s&^[(B.

  Vaibhav> See, I need to change some of the boot parameters as
  Vaibhav> read/seen by the kernel. Once these parameters have been
  Vaibhav> setup by elilo, the Kernel must read it from these
  Vaibhav> predefined areas in memory, into some of its variables. I
  Vaibhav> need to understand where this reading part happens in the
  Vaibhav> kernel. This is where I want to modify the resources, for
  Vaibhav> future use by the kernel !! I don't want to touch the elilo
  Vaibhav> source, only the kernel.

Why not grep the sources for ia64_boot_param?

	--david


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: IA64 memory
  2005-02-03  4:52 IA64 memory Vaibhav Sharma
                   ` (2 preceding siblings ...)
  2005-02-04  2:31 ` David Mosberger
@ 2005-02-06  6:21 ` Vaibhav Sharma
  2005-02-08 18:17 ` David Mosberger
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Vaibhav Sharma @ 2005-02-06  6:21 UTC (permalink / raw)
  To: linux-ia64

hi, 

Thanks for the reply again.

Actually, my task requires me to modify the available physical memory.
I was trying to locate the place where the kernel stores the amount of
memory. Is this value stored in ia64_boot_param structure..?..If I am
wrong, please so tell, and whether that there is some other place
where this value is stored?

I have not tried the elilo sources to locate the structure.  
I tried to locate the structure in the kernel sources, but i couldn't
find the place where this structure is initialized, or where the
particular elements of the data structure are asigned values. As you
told, the  boot param structure is set up by elilo. I wanted to know
that when the EFI comes into play..
Is it that elilo reads the values from EFI?
Also, i wanted to ask that whether EFI is stored in memory, so that it
is accessible to the kernel sources?

Please do reply...
---
Vaibhav

On Thu, 3 Feb 2005 18:31:36 -0800, David Mosberger
<davidm@napali.hpl.hp.com> wrote:
> >>>>> On Thu, 3 Feb 2005 12:33:40 +0530, Vaibhav Sharma <vaibhav.sh@gmail.com> said:
> 
>  Vaibhav> Hi, Thanks a lot for a quick response, I appreciate.  If
>  Vaibhav> you could only help me out a little more ^[$,1s&^[(B.
> 
>  Vaibhav> See, I need to change some of the boot parameters as
>  Vaibhav> read/seen by the kernel. Once these parameters have been
>  Vaibhav> setup by elilo, the Kernel must read it from these
>  Vaibhav> predefined areas in memory, into some of its variables. I
>  Vaibhav> need to understand where this reading part happens in the
>  Vaibhav> kernel. This is where I want to modify the resources, for
>  Vaibhav> future use by the kernel !! I don't want to touch the elilo
>  Vaibhav> source, only the kernel.
> 
> Why not grep the sources for ia64_boot_param?
> 
>        --david
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


-- 
Vaibhav Sharma.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: IA64 memory
  2005-02-03  4:52 IA64 memory Vaibhav Sharma
                   ` (3 preceding siblings ...)
  2005-02-06  6:21 ` Vaibhav Sharma
@ 2005-02-08 18:17 ` David Mosberger
  2005-02-20 11:30 ` Vaibhav Sharma
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: David Mosberger @ 2005-02-08 18:17 UTC (permalink / raw)
  To: linux-ia64

>>>>> On Sun, 6 Feb 2005 11:39:02 +0530, Vaibhav Sharma <vaibhav.sh@gmail.com> said:

  Vaibhav> Actually, my task requires me to modify the available
  Vaibhav> physical memory.  I was trying to locate the place where
  Vaibhav> the kernel stores the amount of memory. Is this value
  Vaibhav> stored in ia64_boot_param structure..?

That would come from the EFI memory-map.  Please read the EFI documentation.

	--david

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: IA64 memory
  2005-02-03  4:52 IA64 memory Vaibhav Sharma
                   ` (4 preceding siblings ...)
  2005-02-08 18:17 ` David Mosberger
@ 2005-02-20 11:30 ` Vaibhav Sharma
  2005-02-20 15:57 ` Matthew Wilcox
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Vaibhav Sharma @ 2005-02-20 11:30 UTC (permalink / raw)
  To: linux-ia64

hi, 
Thanks for all the help..

I am actually very new to EFI. 

I had studied the EFI provided memory map...(Efiloader data,
Eficonventional memory etc)..
But I had one doubt...
The memory map from efi is also defined for locations more than that
which is available (I had 6GB of RAM on the machine, but the memory
map covered addresses more than 6GB). I could not understand why it
does so...
These addresses contained efi memory types as in the "actual"
available memory (< 6GB) like "efiConventionaMemory"and type
"MemoryIOPortSpace" in the end.

It would be great if I could get some documentation on how this memory
map is created and why the memory map is supplied to the kernel for
address ranges more than that existing in physical memory. Also the
kernel will be using the "WB" type of memory only, and in the dump of
efi memory map, i found that the these zones had "WB" type. Are these
zones also used by the kernel and if not, for what purpose these zones
are.
TIA
---
vaibhav
On Sun, 6 Feb 2005 11:39:02 +0530, Vaibhav Sharma <vaibhav.sh@gmail.com> wrote:
> hi,
> 
> Thanks for the reply again.
> 
> Actually, my task requires me to modify the available physical memory.
> I was trying to locate the place where the kernel stores the amount of
> memory. Is this value stored in ia64_boot_param structure..?..If I am
> wrong, please so tell, and whether that there is some other place
> where this value is stored?
> 
> I have not tried the elilo sources to locate the structure.
> I tried to locate the structure in the kernel sources, but i couldn't
> find the place where this structure is initialized, or where the
> particular elements of the data structure are asigned values. As you
> told, the  boot param structure is set up by elilo. I wanted to know
> that when the EFI comes into play..
> Is it that elilo reads the values from EFI?
> Also, i wanted to ask that whether EFI is stored in memory, so that it
> is accessible to the kernel sources?
> 
> Please do reply...
> ---
> Vaibhav
> 
> On Thu, 3 Feb 2005 18:31:36 -0800, David Mosberger
> <davidm@napali.hpl.hp.com> wrote:
> > >>>>> On Thu, 3 Feb 2005 12:33:40 +0530, Vaibhav Sharma <vaibhav.sh@gmail.com> said:
> >
> >  Vaibhav> Hi, Thanks a lot for a quick response, I appreciate.  If
> >  Vaibhav> you could only help me out a little more ^[$,1s&^[(B.
> >
> >  Vaibhav> See, I need to change some of the boot parameters as
> >  Vaibhav> read/seen by the kernel. Once these parameters have been
> >  Vaibhav> setup by elilo, the Kernel must read it from these
> >  Vaibhav> predefined areas in memory, into some of its variables. I
> >  Vaibhav> need to understand where this reading part happens in the
> >  Vaibhav> kernel. This is where I want to modify the resources, for
> >  Vaibhav> future use by the kernel !! I don't want to touch the elilo
> >  Vaibhav> source, only the kernel.
> >
> > Why not grep the sources for ia64_boot_param?
> >
> >        --david
> >
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
> 
> --
> Vaibhav Sharma.
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: IA64 memory
  2005-02-03  4:52 IA64 memory Vaibhav Sharma
                   ` (5 preceding siblings ...)
  2005-02-20 11:30 ` Vaibhav Sharma
@ 2005-02-20 15:57 ` Matthew Wilcox
  2005-02-20 17:29 ` Bukie Mabayoje
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Matthew Wilcox @ 2005-02-20 15:57 UTC (permalink / raw)
  To: linux-ia64

On Sun, Feb 20, 2005 at 04:48:50PM +0530, Vaibhav Sharma wrote:
> The memory map from efi is also defined for locations more than that
> which is available (I had 6GB of RAM on the machine, but the memory
> map covered addresses more than 6GB). I could not understand why it
> does so...

The memory in the machine isn't necessarily contiguous.  For example, an
hp zx1 machine would map 6GB of memory at 0-1GB then 257-260GB, then 4-6GB

-- 
"Next the statesmen will invent cheap lies, putting the blame upon 
the nation that is attacked, and every man will be glad of those
conscience-soothing falsities, and will diligently study them, and refuse
to examine any refutations of them; and thus he will by and by convince 
himself that the war is just, and will thank God for the better sleep 
he enjoys after this process of grotesque self-deception." -- Mark Twain

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: IA64 memory
  2005-02-03  4:52 IA64 memory Vaibhav Sharma
                   ` (6 preceding siblings ...)
  2005-02-20 15:57 ` Matthew Wilcox
@ 2005-02-20 17:29 ` Bukie Mabayoje
  2005-02-24 18:40 ` Bukie Mabayoje
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Bukie Mabayoje @ 2005-02-20 17:29 UTC (permalink / raw)
  To: linux-ia64



Vaibhav Sharma wrote:

> hi,
> Thanks for all the help..
>
> I am actually very new to EFI.
>
> I had studied the EFI provided memory map...(Efiloader data,
> Eficonventional memory etc)..
> But I had one doubt...
> The memory map from efi is also defined for locations more than that
> which is available (I had 6GB of RAM on the machine, but the memory
> map covered addresses more than 6GB). I could not understand why it
> does so...

Post the memmap output.    ----> Don't forget to convert it from unicode to ascii

>
> These addresses contained efi memory types as in the "actual"
> available memory (< 6GB) like "efiConventionaMemory"and type
> "MemoryIOPortSpace" in the end.
>
> It would be great if I could get some documentation on how this memory
> map is created

Read the Memory Allocation Service. The chapter # is different  between the spec versions.

> and why the memory map is supplied to the kernel for
> address ranges more than that existing in physical memory. Also the
> kernel will be using the "WB" type of memory only, and in the dump of
> efi memory map, i found that the these zones had "WB" type. Are these
> zones also used by the kernel and if not, for what purpose these zones
> are.

There are various reason why an OS maps a memory region with a given attribute and that is beyond the scope of this mail. It is easier to talk about specific attributes.
Also read ExitBootServices(), it will explain the hand over of EFI memory map to the OS. On exit of ExitBootServices the OS owns all available (EfiConventionalMemory)  memory and a few others it can reclaim.. At this point it can do as it see fit with ONLY the memory its owns.

>
> TIA
> ---
> vaibhav
> On Sun, 6 Feb 2005 11:39:02 +0530, Vaibhav Sharma <vaibhav.sh@gmail.com> wrote:
> > hi,
> >
> > Thanks for the reply again.
> >
> > Actually, my task requires me to modify the available physical memory.
> > I was trying to locate the place where the kernel stores the amount of
> > memory. Is this value stored in ia64_boot_param structure..?..If I am
> > wrong, please so tell, and whether that there is some other place
> > where this value is stored?
> >
> > I have not tried the elilo sources to locate the structure.
> > I tried to locate the structure in the kernel sources, but i couldn't
> > find the place where this structure is initialized, or where the
> > particular elements of the data structure are asigned values. As you
> > told, the  boot param structure is set up by elilo. I wanted to know
> > that when the EFI comes into play..
> > Is it that elilo reads the values from EFI?
> > Also, i wanted to ask that whether EFI is stored in memory, so that it
> > is accessible to the kernel sources?
> >
> > Please do reply...
> > ---
> > Vaibhav
> >
> > On Thu, 3 Feb 2005 18:31:36 -0800, David Mosberger
> > <davidm@napali.hpl.hp.com> wrote:
> > > >>>>> On Thu, 3 Feb 2005 12:33:40 +0530, Vaibhav Sharma <vaibhav.sh@gmail.com> said:
> > >
> > >  Vaibhav> Hi, Thanks a lot for a quick response, I appreciate.  If
> > >  Vaibhav> you could only help me out a little more ^[$,1s&^[(B.
> > >
> > >  Vaibhav> See, I need to change some of the boot parameters as
> > >  Vaibhav> read/seen by the kernel. Once these parameters have been
> > >  Vaibhav> setup by elilo, the Kernel must read it from these
> > >  Vaibhav> predefined areas in memory, into some of its variables. I
> > >  Vaibhav> need to understand where this reading part happens in the
> > >  Vaibhav> kernel. This is where I want to modify the resources, for
> > >  Vaibhav> future use by the kernel !! I don't want to touch the elilo
> > >  Vaibhav> source, only the kernel.
> > >
> > > Why not grep the sources for ia64_boot_param?
> > >
> > >        --david
> > >
> > > -
> > > To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
> > > the body of a message to majordomo@vger.kernel.org
> > > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > >
> >
> > --
> > Vaibhav Sharma.
> >
> -
> To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: IA64 memory
  2005-02-03  4:52 IA64 memory Vaibhav Sharma
                   ` (7 preceding siblings ...)
  2005-02-20 17:29 ` Bukie Mabayoje
@ 2005-02-24 18:40 ` Bukie Mabayoje
  2005-03-01 13:44 ` Vaibhav Sharma
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 13+ messages in thread
From: Bukie Mabayoje @ 2005-02-24 18:40 UTC (permalink / raw)
  To: linux-ia64

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
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: IA64 memory
  2005-02-03  4:52 IA64 memory Vaibhav Sharma
                   ` (8 preceding siblings ...)
  2005-02-24 18:40 ` Bukie Mabayoje
@ 2005-03-01 13:44 ` Vaibhav Sharma
  2005-03-01 15:24 ` Alex Williamson
  2005-03-01 15:32 ` Matthew Wilcox
  11 siblings, 0 replies; 13+ messages in thread
From: Vaibhav Sharma @ 2005-03-01 13:44 UTC (permalink / raw)
  To: linux-ia64

hi all, 

Thank you again for the details.

I have another query. I had downloaded a pdf concerning the zx1 memory
and I/O ("zx1 mio External reference specification"). In the system
address map, it shows that memory space is consisting of m0(1 GB),
m1(3GB) and m2 (252 GB), which means  m0+m1+m2= 1+ 3+252%6 GB*. Is
it that zx1 chip is capable of addressing RAM of 256 GB size only..if
my RAM is more than 256 GB, do I have to change the chip..?

(* not considering other areas like GMMIO, LMMIO etc)..

I have zx6000 hp machine. 

Plz do reply...

TIA, 
vaibhav



On Thu, 24 Feb 2005 10:40:58 -0800, Bukie Mabayoje <bukiemab@gte.net> wrote:
> 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
> >
>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: IA64 memory
  2005-02-03  4:52 IA64 memory Vaibhav Sharma
                   ` (9 preceding siblings ...)
  2005-03-01 13:44 ` Vaibhav Sharma
@ 2005-03-01 15:24 ` Alex Williamson
  2005-03-01 15:32 ` Matthew Wilcox
  11 siblings, 0 replies; 13+ messages in thread
From: Alex Williamson @ 2005-03-01 15:24 UTC (permalink / raw)
  To: linux-ia64


   The memory capacity of the zx1 chipset is much greater than the
amount that can be physically installed in the system.  I believe the
largest zx1 system so far is an rx5670, which supports 96GB w/ 2GB
DIMMs.  The sx1000 based systems can support more memory.

	Alex

On Tue, 2005-03-01 at 19:02 +0530, Vaibhav Sharma wrote:
> hi all, 
> 
> Thank you again for the details.
> 
> I have another query. I had downloaded a pdf concerning the zx1 memory
> and I/O ("zx1 mio External reference specification"). In the system
> address map, it shows that memory space is consisting of m0(1 GB),
> m1(3GB) and m2 (252 GB), which means  m0+m1+m2= 1+ 3+252%6 GB*. Is
> it that zx1 chip is capable of addressing RAM of 256 GB size only..if
> my RAM is more than 256 GB, do I have to change the chip..?
> 
> (* not considering other areas like GMMIO, LMMIO etc)..
> 
> I have zx6000 hp machine. 
> 
> Plz do reply...
> 
> TIA, 
> vaibhav

> 
-- 
Alex Williamson                             HP Linux & Open Source Lab


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: IA64 memory
  2005-02-03  4:52 IA64 memory Vaibhav Sharma
                   ` (10 preceding siblings ...)
  2005-03-01 15:24 ` Alex Williamson
@ 2005-03-01 15:32 ` Matthew Wilcox
  11 siblings, 0 replies; 13+ messages in thread
From: Matthew Wilcox @ 2005-03-01 15:32 UTC (permalink / raw)
  To: linux-ia64

On Tue, Mar 01, 2005 at 08:24:20AM -0700, Alex Williamson wrote:
>    The memory capacity of the zx1 chipset is much greater than the
> amount that can be physically installed in the system.  I believe the
> largest zx1 system so far is an rx5670, which supports 96GB w/ 2GB
> DIMMs.  The sx1000 based systems can support more memory.

rx4640 supports 4GB DIMMs but has fewer slots, so can go to 128GB.

-- 
"Next the statesmen will invent cheap lies, putting the blame upon 
the nation that is attacked, and every man will be glad of those
conscience-soothing falsities, and will diligently study them, and refuse
to examine any refutations of them; and thus he will by and by convince 
himself that the war is just, and will thank God for the better sleep 
he enjoys after this process of grotesque self-deception." -- Mark Twain

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2005-03-01 15:32 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
2005-03-01 13:44 ` Vaibhav Sharma
2005-03-01 15:24 ` Alex Williamson
2005-03-01 15:32 ` Matthew Wilcox

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox