public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Jeff V. Merkey" <jmerkey@vger.timpanogas.org>
To: linux-kernel@vger.kernel.org
Cc: jmerkey@timpanogas.org
Subject: Re: ioremap()/PCI sickness in 2.4.18-rc2 (FIXED ALMOST)
Date: Wed, 20 Feb 2002 14:54:49 -0700	[thread overview]
Message-ID: <20020220145449.A1102@vger.timpanogas.org> (raw)
In-Reply-To: <20020220103320.A32211@vger.timpanogas.org> <20020220103539.B32211@vger.timpanogas.org> <3C73DC34.E83CCD35@mandrakesoft.com> <20020220.093034.112623671.davem@redhat.com> <20020220110004.A32431@vger.timpanogas.org>
In-Reply-To: <20020220110004.A32431@vger.timpanogas.org>; from jmerkey@vger.timpanogas.org on Wed, Feb 20, 2002 at 11:00:04AM -0700



The following information is submitted regarding this problem:

I have corrected the prefetch allocation problem by reducing 
the prefetch address space size from 512 MB down to 32 MB.  The
failing code is in get_vm_area().  This bug effectively reduces
the ability of Linux over other OS's to run scalable SCI based
applications with large numbers of nodes if there are large numbers
of nodes in a cluster and these nodes have more than 1 GB of memory
in each system.  

My RAID/FS application does not need a huge prefetch address space so I 
can get around this problem easily, but some of the SCI applications do, 
and this problem will relegate Linux to a back seat status for supercomputer 
applications that use this technology if Linux in unable to map larger 
regions of memory.  I would propose that the maintainer of 
vmalloc.c look at using 48 bit PTE entries or some other solution 
as a way to alloc larger virtual address frames when the system has 
a lot of physical memory.  It's seems pretty lame to me for a machine 
with 2 GB of physical memory not to have at lest 256 MB of address space
left over for address mapping.  

Offending code attached.  Please advise as to what a proposed solution
could be if any is possible with this problem.  I am happy to adjust
the Dolphin IRM driver behavior to accomodate Linux but I think some 
larger clusters (i.e. > 1000 nodes) may not work with Linux is there's
not enough address space to map remotely across the cluster.

Jeff


struct vm_struct * get_vm_area(unsigned long size, unsigned long flags)
{
	unsigned long addr;
	struct vm_struct **p, *tmp, *area;

	area = (struct vm_struct *) kmalloc(sizeof(*area), GFP_KERNEL);
	if (!area)
		return NULL;
	size += PAGE_SIZE;
	addr = VMALLOC_START;
	write_lock(&vmlist_lock);
	for (p = &vmlist; (tmp = *p) ; p = &tmp->next) {
           
===============>  we barf here since the size + addr wraps

		if ((size + addr) < addr)
			goto out;

		if (size + addr <= (unsigned long) tmp->addr)
			break;
		addr = tmp->size + (unsigned long) tmp->addr;
		if (addr > VMALLOC_END-size)
			goto out;
	}
	area->flags = flags;
	area->addr = (void *)addr;
	area->size = size;
	area->next = *p;
	*p = area;
	write_unlock(&vmlist_lock);
	return area;

out:
	write_unlock(&vmlist_lock);
	kfree(area);
	return NULL;
}











On Wed, Feb 20, 2002 at 11:00:04AM -0700, Jeff V. Merkey wrote:
> 
> 
> David,
> 
> Someone had a thought that perhaps the Serverworks chipset is mapping 
> addresses above the 4GB boundry.  Any thoughts on how to get around
> this problem?  
> 
> Jeff
> 
> 
> On Wed, Feb 20, 2002 at 09:30:34AM -0800, David S. Miller wrote:
> >    From: Jeff Garzik <jgarzik@mandrakesoft.com>
> >    Date: Wed, 20 Feb 2002 12:26:12 -0500
> >    
> >    type abuse aside, and alpha bugs aside, this looks ok... what is the
> >    value of as->msize?
> > 
> > Jeff and Jeff, the problem is one of two things:
> > 
> > 1) when you have ~2GB of memory the vmalloc pool is very small
> >    and this it the same place ioremap allocations come from
> > 
> > 2) the BIOS or Linus is not assigning resources of the device
> >    properly, or it simple can't because the available PCI MEM space
> >    with this much memory is too small
> > 
> > I note that one of the resources of the card is 16MB or so.
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at  http://www.tux.org/lkml/
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

  reply	other threads:[~2002-02-20 21:37 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-02-20 17:33 ioremap()/PCI sickness in 2.4.18-rc2 Jeff V. Merkey
2002-02-20 17:35 ` Jeff V. Merkey
2002-02-20 17:26   ` Jeff Garzik
2002-02-20 17:30     ` David S. Miller
2002-02-20 18:00       ` Jeff V. Merkey
2002-02-20 21:54         ` Jeff V. Merkey [this message]
2002-02-20 21:51           ` ioremap()/PCI sickness in 2.4.18-rc2 (FIXED ALMOST) Jeff Garzik
2002-02-20 22:20             ` Jeff V. Merkey
2002-02-20 22:53               ` Jeff V. Merkey
2002-02-20 23:06               ` Alan Cox
2002-02-20 23:35                 ` Jeff V. Merkey
     [not found]                 ` <mailman.1014247349.21244.linux-kernel2news@redhat.com>
2002-02-20 23:44                   ` Pete Zaitcev
2002-02-20 22:10           ` Jeff V. Merkey
2002-02-20 22:08             ` arjan
2002-02-22 11:08             ` Steffen Persvold
2002-02-22 18:17               ` Jeff V. Merkey
2002-02-22 18:42                 ` David Mosberger
2002-02-22 18:51                   ` Jeff Garzik
2002-02-22 19:01                     ` David Mosberger
2002-02-22 19:42                   ` Jeff V. Merkey
2002-02-23  2:22               ` Richard Henderson
2002-02-20 18:44       ` ioremap()/PCI sickness in 2.4.18-rc2 Steffen Persvold
2002-02-20 20:36         ` Jeff V. Merkey
2002-02-22 11:49           ` Steffen Persvold
2002-02-22 18:21             ` Jeff V. Merkey
2002-02-20 17:46     ` Jeff V. Merkey

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=20020220145449.A1102@vger.timpanogas.org \
    --to=jmerkey@vger.timpanogas.org \
    --cc=jmerkey@timpanogas.org \
    --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