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/
next prev parent 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.