public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
* Queries on IA -64
@ 2005-05-16 11:49 Mohit Katiyar
  2005-05-16 16:43 ` Grant Grundler
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Mohit Katiyar @ 2005-05-16 11:49 UTC (permalink / raw)
  To: linux-ia64

Hi,
I am first time mailing regarding some booting
procedure for IA-64 Linux . I am having a ZX MIO chip
with 6 GB RAM and 16 KB of page size. I have compiled
the kernel with NUMA off and Virtual mem map on

First in function paging_init 
line    max_dma = virt_to_phys((void *)
MAX_DMA_ADDRESS) >> PAGE_SHIFT;
max_dma comes out to be 0x7fffffffffff and max low pfn
= 0x103ffec
Therefore all the pages move into DMA zone during
initialization .
QUESTION Why do we have such a large max_dma value.
What is the use for that?

Question In which case does trim bottom is called and
in which case trim top will be called??
Second I am trying to esablish connection between efi
descriptor and zone initialization(count_dma_pages in
paging _init)
What I have guessed till now is that count_dma_pages
counts the number of pages available through
efi_memmap_walk. It counts the pages present in the
EFI_MEMORY_WB from the memory mapped passed from the
efi to the kernel. It clubs consecutive type of WB
type memory to count pages by passing start and end
variables to count_dma_pages.It also trims the values
if they are not page aligned.
Now  I am giving the efi memory map and the start and
end values in count_dma_pages.
I have some issues in it
I have mentioned question in betwwen

/************** EFI memory map *********************/
May 13 16:57:01 HORIZON kernel: mem 00 

May 13 16:57:01 HORIZON kernel: type BootServicesData 

May 13 16:57:01 HORIZON kernel: attribute = 0x8 

May 13 16:57:01 HORIZON kernel: range [0x0000000000000000-0x0000000000001000] (0MB)

QUESTION>>>>>>>>Why does count_dma_pages skips this
range as seen from start and end values indicated at
the end of mail

May 13 16:57:01 HORIZON kernel: mem 01 

May 13 16:57:01 HORIZON kernel: type ConventionalMemory 

May 13 16:57:01 HORIZON kernel: attribute = 0x8 

May 13 16:57:01 HORIZON kernel: range [0x0000000000001000-0x00000000000a0000] (0MB)

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

May 13 16:57:02 HORIZON kernel: mem 02 

May 13 16:57:02 HORIZON kernel: type = MemoryMappedIO 

May 13 16:57:02 HORIZON kernel: attribute = 0x3 

May 13 16:57:02 HORIZON kernel: range [0x00000000000a0000-0x00000000000c0000] (0MB)

May 13 16:57:02 HORIZON kernel: mem 03 

May 13 16:57:02 HORIZON kernel: type RuntimeServicesCode 

May 13 16:57:02 HORIZON kernel: attribute 0x8000000000000001 

May 13 16:57:02 HORIZON kernel: range [0x00000000000c0000-0x0000000000100000] (0MB)

May 13 16:57:02 HORIZON kernel: mem 04 

May 13 16:57:02 HORIZON kernel: type ConventionalMemory 

May 13 16:57:03 HORIZON kernel: attribute = 0x8 

May 13 16:57:03 HORIZON kernel: range [0x0000000000100000-0x0000000004000000] (63MB)

May 13 16:57:03 HORIZON kernel: mem 05 

May 13 16:57:03 HORIZON kernel: type = LoaderData 

May 13 16:57:03 HORIZON kernel: attribute = 0x8 

May 13 16:57:03 HORIZON kernel: range [0x0000000004000000-0x0000000004a22000] (10MB)

May 13 16:57:03 HORIZON kernel: mem 06 

May 13 16:57:03 HORIZON kernel: type ConventionalMemory 

May 13 16:57:03 HORIZON kernel: attribute = 0x8 

May 13 16:57:03 HORIZON kernel: range [0x0000000004a22000-0x000000003f5e4000] (939MB)

May 13 16:57:03 HORIZON kernel: mem 07 

May 13 16:57:04 HORIZON kernel: type BootServicesData 

May 13 16:57:04 HORIZON kernel: attribute = 0x8 

May 13 16:57:04 HORIZON kernel: range [0x000000003f5e4000-0x000000003f5e6000] (0MB)

May 13 16:57:04 HORIZON kernel: mem 08 

May 13 16:57:04 HORIZON kernel: type RuntimeServicesCode 

May 13 16:57:04 HORIZON kernel: attribute 0x8000000000000008 

May 13 16:57:04 HORIZON kernel: range [0x000000003f5e6000-0x000000003fac0000] (4MB)

May 13 16:57:04 HORIZON kernel: mem 09 

May 13 16:57:04 HORIZON kernel: type = PalCode 

May 13 16:57:05 HORIZON kernel: attribute 0x8000000000000008 

May 13 16:57:05 HORIZON kernel: range [0x000000003fac0000-0x000000003fb00000] (0MB)

May 13 16:57:05 HORIZON kernel: mem 10 

May 13 16:57:05 HORIZON kernel: type BootServicesData 

May 13 16:57:05 HORIZON kernel: attribute = 0x8 

May 13 16:57:05 HORIZON kernel: range [0x000000003fb00000-0x000000003fb2c000] (0MB)

May 13 16:57:05 HORIZON kernel: mem 11 

May 13 16:57:05 HORIZON kernel: type ACPIReclaimMemory 

May 13 16:57:05 HORIZON kernel: attribute = 0x8 

May 13 16:57:06 HORIZON kernel: range [0x000000003fb2c000-0x000000003fb38000] (0MB)

May 13 16:57:06 HORIZON kernel: mem 12 

May 13 16:57:06 HORIZON kernel: type RuntimeServicesData 

May 13 16:57:06 HORIZON kernel: attribute 0x8000000000000008 

May 13 16:57:06 HORIZON kernel: range [0x000000003fb38000-0x0000000040000000] (4MB)

May 13 16:57:06 HORIZON kernel: mem 13 

May 13 16:57:06 HORIZON kernel: type = MemoryMappedIO 

May 13 16:57:07 HORIZON kernel: attribute = 0x1 

May 13 16:57:07 HORIZON kernel: range [0x0000000080000000-0x00000000fe000000] (2016MB)

May 13 16:57:07 HORIZON kernel: mem 14 

May 13 16:57:07 HORIZON kernel: type = MemoryMappedIO 

May 13 16:57:07 HORIZON kernel: attribute 0x8000000000000001 

May 13 16:57:07 HORIZON kernel: range [0x00000000fed00000-0x0000000100000000] (19MB)

May 13 16:57:07 HORIZON kernel: mem 15 

May 13 16:57:07 HORIZON kernel: type ConventionalMemory 

May 13 16:57:08 HORIZON kernel: attribute = 0x8 

May 13 16:57:08 HORIZON kernel: range [0x0000000100000000-0x0000000180000000] (2048MB)

May 13 16:57:08 HORIZON kernel: mem 16 

May 13 16:57:08 HORIZON kernel: type ConventionalMemory 

May 13 16:57:09 HORIZON kernel: attribute = 0x8 

May 13 16:57:09 HORIZON kernel: range [0x0000004040000000-0x00000040fef8a000] (3055MB)

May 13 16:57:09 HORIZON kernel: mem 17 

May 13 16:57:09 HORIZON kernel: type = LoaderData 

May 13 16:57:09 HORIZON kernel: attribute = 0x8 

May 13 16:57:09 HORIZON kernel: range [0x00000040fef8a000-0x00000040fefa6000] (0MB)

May 13 16:57:09 HORIZON kernel: mem 18 

May 13 16:57:10 HORIZON kernel: type = LoaderCode 

May 13 16:57:10 HORIZON kernel: attribute = 0x8 

May 13 16:57:10 HORIZON kernel: range [0x00000040fefa6000-0x00000040feffe000] (0MB)

May 13 16:57:10 HORIZON kernel: mem 19 

May 13 16:57:10 HORIZON kernel: type ConventionalMemory 

May 13 16:57:10 HORIZON kernel: attribute = 0x8 

May 13 16:57:10 HORIZON kernel: range [0x00000040feffe000-0x00000040ff2ee000] (2MB)

May 13 16:57:10 HORIZON kernel: mem 20 

May 13 16:57:10 HORIZON kernel: type BootServicesData 

May 13 16:57:10 HORIZON kernel: attribute = 0x8 

May 13 16:57:11 HORIZON kernel: range [0x00000040ff2ee000-0x00000040ff801000] (5MB)

May 13 16:57:11 HORIZON kernel: mem 21 

May 13 16:57:11 HORIZON kernel: type ConventionalMemory 

May 13 16:57:11 HORIZON kernel: attribute = 0x8 

May 13 16:57:11 HORIZON kernel: range [0x00000040ff801000-0x00000040ff802000] (0MB)

May 13 16:57:11 HORIZON kernel: mem 22 

May 13 16:57:11 HORIZON kernel: type BootServicesData 

May 13 16:57:11 HORIZON kernel: attribute = 0x8 

May 13 16:57:11 HORIZON kernel: range [0x00000040ff802000-0x00000040ff804000] (0MB)

May 13 16:57:11 HORIZON kernel: mem 23 

May 13 16:57:11 HORIZON kernel: type ConventionalMemory 

May 13 16:57:12 HORIZON kernel: attribute = 0x8 

May 13 16:57:12 HORIZON kernel: range [0x00000040ff804000-0x00000040ff806000] (0MB)

May 13 16:57:12 HORIZON kernel: mem 24 

May 13 16:57:12 HORIZON kernel: type BootServicesData 

May 13 16:57:12 HORIZON kernel: attribute = 0x8 

May 13 16:57:12 HORIZON kernel: range [0x00000040ff806000-0x00000040ff9fa000] (1MB)

May 13 16:57:12 HORIZON kernel: mem 25 

May 13 16:57:12 HORIZON kernel: type ConventionalMemory 

May 13 16:57:12 HORIZON kernel: attribute = 0x8 

May 13 16:57:12 HORIZON kernel: range [0x00000040ff9fa000-0x00000040ff9fb000] (0MB)

May 13 16:57:12 HORIZON kernel: mem 26 

May 13 16:57:13 HORIZON kernel: type BootServicesData 

May 13 16:57:13 HORIZON kernel: attribute = 0x8 

May 13 16:57:13 HORIZON kernel: range [0x00000040ff9fb000-0x00000040ff9fe000] (0MB)

May 13 16:57:13 HORIZON kernel: mem 27 

May 13 16:57:13 HORIZON kernel: type ConventionalMemory 

May 13 16:57:13 HORIZON kernel: attribute = 0x8 

May 13 16:57:13 HORIZON kernel: range [0x00000040ff9fe000-0x00000040ffc66000] (2MB)

May 13 16:57:13 HORIZON kernel: mem 28 

May 13 16:57:14 HORIZON kernel: type RuntimeServicesCode 

May 13 16:57:14 HORIZON kernel: attribute 0x8000000000000008 

May 13 16:57:14 HORIZON kernel: range [0x00000040ffc66000-0x00000040ffca4000] (0MB)

May 13 16:57:14 HORIZON kernel: mem 29 

May 13 16:57:14 HORIZON kernel: type BootServicesCode 

May 13 16:57:14 HORIZON kernel: attribute = 0x8 

May 13 16:57:14 HORIZON kernel: range [0x00000040ffca4000-0x00000040ffdfe000] (1MB)

May 13 16:57:14 HORIZON kernel: mem 30 

May 13 16:57:14 HORIZON kernel: type ConventionalMemory 

May 13 16:57:15 HORIZON kernel: attribute = 0x8 

May 13 16:57:15 HORIZON kernel: range [0x00000040ffdfe000-0x00000040ffe10000] (0MB)

May 13 16:57:15 HORIZON kernel: mem 31 

May 13 16:57:15 HORIZON kernel: type RuntimeServicesCode 

May 13 16:57:15 HORIZON kernel: attribute 0x8000000000000008 

May 13 16:57:15 HORIZON kernel: range [0x00000040ffe10000-0x00000040ffe7e000] (0MB)

May 13 16:57:15 HORIZON kernel: mem 32 

May 13 16:57:15 HORIZON kernel: type ConventionalMemory 

May 13 16:57:15 HORIZON kernel: attribute = 0x8 

May 13 16:57:15 HORIZON kernel: range [0x00000040ffe7e000-0x00000040fffb2000] (1MB)

May 13 16:57:15 HORIZON kernel: mem 33 

May 13 16:57:15 HORIZON kernel: type RuntimeServicesData 

May 13 16:57:15 HORIZON kernel: attribute 0x8000000000000008 

May 13 16:57:15 HORIZON kernel: range [0x00000040fffb2000-0x0000004100000000] (0MB)

May 13 16:57:15 HORIZON kernel: mem 34 

May 13 16:57:16 HORIZON kernel: type = MemoryMappedIO 

May 13 16:57:16 HORIZON kernel: attribute = 0x1 

May 13 16:57:16 HORIZON kernel: range [0x0000080000000000-0x0000100000000000] (8388608MB)

May 13 16:57:16 HORIZON kernel: mem 35 

May 13 16:57:16 HORIZON kernel: type MemoryMappedIOPortSpace 

May 13 16:57:16 HORIZON kernel: attribute 0x8000000000000001 

May 13 16:57:16 HORIZON kernel: range [0x0003fffffc000000-0x0004000000000000] (64MB)
/************** EFI memory map ends
*********************/


/****Start and end values from count dma
pages********/
May 13 16:57:18 HORIZON kernel: From count dma pages
start=0xe000000001000000 end=0xe00000003f5e4000

May 13 16:57:18 HORIZON kernel: From count dma pages
start=0xe00000003fb00000 end=0xe00000003fb2c000

May 13 16:57:18 HORIZON kernel: From count dma pages
start=0xe000000100000000 end=0xe000000180000000

May 13 16:57:18 HORIZON kernel: From count dma pages
start=0xe000004040000000 end=0xe0000040ffc64000

May 13 16:57:18 HORIZON kernel: From count dma pages
start=0xe0000040ffca4000 end=0xe0000040ffe10000

May 13 16:57:18 HORIZON kernel: From count dma pages
start=0xe0000040ffe80000 end=0xe0000040fffb0000





I have one more question different from the league

If i compile my kernel with Virtual mem map off and
NUMA off i my available free ram decreases by about 1
GB . I am not able to figure it out??





I know my mail has become quite long but I will be
thankful for your pains!!

TIA

Mohit Katiyar 



		
Yahoo! Mail
Stay connected, organized, and protected. Take the tour:
http://tour.mail.yahoo.com/mailtour.html


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

* Re: Queries on IA -64
  2005-05-16 11:49 Queries on IA -64 Mohit Katiyar
@ 2005-05-16 16:43 ` Grant Grundler
  2005-05-17 23:05 ` Bjorn Helgaas
  2005-05-18  5:18 ` Mohit Katiyar
  2 siblings, 0 replies; 4+ messages in thread
From: Grant Grundler @ 2005-05-16 16:43 UTC (permalink / raw)
  To: linux-ia64

On Mon, May 16, 2005 at 04:49:20AM -0700, Mohit Katiyar wrote:
> Hi,
> I am first time mailing regarding some booting
> procedure for IA-64 Linux . I am having a ZX MIO chip
> with 6 GB RAM and 16 KB of page size. I have compiled
> the kernel with NUMA off and Virtual mem map on
> 
> First in function paging_init 
> line    max_dma = virt_to_phys((void *)
> MAX_DMA_ADDRESS) >> PAGE_SHIFT;
> max_dma comes out to be 0x7fffffffffff and max low pfn
> = 0x103ffec
> Therefore all the pages move into DMA zone during
> initialization .
> QUESTION Why do we have such a large max_dma value.
> What is the use for that?

Avoid bounce buffers and support IOMMU bypass.
Any device can DMA to any physical address - either
directly or via IOMMU.

grant

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

* Re: Queries on IA -64
  2005-05-16 11:49 Queries on IA -64 Mohit Katiyar
  2005-05-16 16:43 ` Grant Grundler
@ 2005-05-17 23:05 ` Bjorn Helgaas
  2005-05-18  5:18 ` Mohit Katiyar
  2 siblings, 0 replies; 4+ messages in thread
From: Bjorn Helgaas @ 2005-05-17 23:05 UTC (permalink / raw)
  To: linux-ia64

On Monday 16 May 2005 5:49 am, Mohit Katiyar wrote:
> I am having a ZX MIO chip

I assume you mean an HP box with zx1 chipset.

> First in function paging_init 
> line    max_dma = virt_to_phys((void *)
> MAX_DMA_ADDRESS) >> PAGE_SHIFT;
> max_dma comes out to be 0x7fffffffffff and max low pfn
> = 0x103ffec
> Therefore all the pages move into DMA zone during
> initialization .
> QUESTION Why do we have such a large max_dma value.
> What is the use for that?

As Grant said, ia64 provides the illusion that any device
can DMA directly to any physical memory.  For devices that
can't do 64-bit DMA directly, HP and SGI chipsets have
hardware I/O TLBs that turn a 32-bit PCI bus address into
a 64-bit memory address.  For boxes without a hardware
I/O TLB, there's a software I/O TLB that provides similar
functionality using bounce buffers.

> Question In which case does trim bottom is called and
> in which case trim top will be called??

The identity-mapped kernel segment is mapped with large
pages (typically 16MB or 64MB).  The ia64 architecture
requires that we prevent attribute aliasing, so we can't
have one of those pages that contains both WB and UC
memory.  So trim_top() and trim_bottom() trim the memory
map so we ignore chunks that contain anything other than
WB memory.

> May 13 16:57:01 HORIZON kernel: range > [0x0000000000000000-0x0000000000001000] (0MB)
> 
> QUESTION>>>>>>>>Why does count_dma_pages skips this
> range as seen from start and end values indicated at
> the end of mail

This is removed because it's in the same 16MB granule
as the 0xa0000-0xc0000 VGA frame buffer region, which
is MMIO.  That MMIO region forces us to ignore any
WB memory in the first 16MB.

> May 13 16:57:02 HORIZON kernel: type = MemoryMappedIO 
> May 13 16:57:02 HORIZON kernel: attribute = 0x3 
> May 13 16:57:02 HORIZON kernel: range > [0x00000000000a0000-0x00000000000c0000] (0MB)

> If i compile my kernel with Virtual mem map off and
> NUMA off i my available free ram decreases by about 1
> GB . I am not able to figure it out??

My guess is that without virtual memmap, you just end
up wasting a huge amount of memory on page structures.
The zx1 chipset has huge holes in the physical memory
map, and I think that without virtual memmap, we allocate
page structures even for the holes.

This book is a great place to start for questions like
these:

    http://www.lia64.org/book/

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

* Re: Queries on IA -64
  2005-05-16 11:49 Queries on IA -64 Mohit Katiyar
  2005-05-16 16:43 ` Grant Grundler
  2005-05-17 23:05 ` Bjorn Helgaas
@ 2005-05-18  5:18 ` Mohit Katiyar
  2 siblings, 0 replies; 4+ messages in thread
From: Mohit Katiyar @ 2005-05-18  5:18 UTC (permalink / raw)
  To: linux-ia64

Hi everyone
A big thanks to all who cleared my doubts .It was a
great help 
Thanks once again

Mohit Katiyar
--- Bjorn Helgaas <bjorn.helgaas@hp.com> wrote:
> On Monday 16 May 2005 5:49 am, Mohit Katiyar wrote:
> > I am having a ZX MIO chip
> 
> I assume you mean an HP box with zx1 chipset.
> 
> > First in function paging_init 
> > line    max_dma = virt_to_phys((void *)
> > MAX_DMA_ADDRESS) >> PAGE_SHIFT;
> > max_dma comes out to be 0x7fffffffffff and max low
> pfn
> > = 0x103ffec
> > Therefore all the pages move into DMA zone during
> > initialization .
> > QUESTION Why do we have such a large max_dma
> value.
> > What is the use for that?
> 
> As Grant said, ia64 provides the illusion that any
> device
> can DMA directly to any physical memory.  For
> devices that
> can't do 64-bit DMA directly, HP and SGI chipsets
> have
> hardware I/O TLBs that turn a 32-bit PCI bus address
> into
> a 64-bit memory address.  For boxes without a
> hardware
> I/O TLB, there's a software I/O TLB that provides
> similar
> functionality using bounce buffers.
> 
> > Question In which case does trim bottom is called
> and
> > in which case trim top will be called??
> 
> The identity-mapped kernel segment is mapped with
> large
> pages (typically 16MB or 64MB).  The ia64
> architecture
> requires that we prevent attribute aliasing, so we
> can't
> have one of those pages that contains both WB and UC
> memory.  So trim_top() and trim_bottom() trim the
> memory
> map so we ignore chunks that contain anything other
> than
> WB memory.
> 
> > May 13 16:57:01 HORIZON kernel: range > > [0x0000000000000000-0x0000000000001000] (0MB)
> > 
> > QUESTION>>>>>>>>Why does count_dma_pages skips
> this
> > range as seen from start and end values indicated
> at
> > the end of mail
> 
> This is removed because it's in the same 16MB
> granule
> as the 0xa0000-0xc0000 VGA frame buffer region,
> which
> is MMIO.  That MMIO region forces us to ignore any
> WB memory in the first 16MB.
> 
> > May 13 16:57:02 HORIZON kernel: type > MemoryMappedIO 
> > May 13 16:57:02 HORIZON kernel: attribute = 0x3 
> > May 13 16:57:02 HORIZON kernel: range > > [0x00000000000a0000-0x00000000000c0000] (0MB)
> 
> > If i compile my kernel with Virtual mem map off
> and
> > NUMA off i my available free ram decreases by
> about 1
> > GB . I am not able to figure it out??
> 
> My guess is that without virtual memmap, you just
> end
> up wasting a huge amount of memory on page
> structures.
> The zx1 chipset has huge holes in the physical
> memory
> map, and I think that without virtual memmap, we
> allocate
> page structures even for the holes.
> 
> This book is a great place to start for questions
> like
> these:
> 
>     http://www.lia64.org/book/
> 


		
__________________________________ 
Do you Yahoo!? 
Make Yahoo! your home page 
http://www.yahoo.com/r/hs

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

end of thread, other threads:[~2005-05-18  5:18 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-16 11:49 Queries on IA -64 Mohit Katiyar
2005-05-16 16:43 ` Grant Grundler
2005-05-17 23:05 ` Bjorn Helgaas
2005-05-18  5:18 ` Mohit Katiyar

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