Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Oct 2004 09:43:56 -0700 (PDT)
From:      luke@prgmr.com
To:        Doug White <dwhite@gumbysoft.com>
Cc:        luke@prgmr.com
Subject:   Re: FreeBSD 4.10 + PAE + SunFire v40z (Newisys 4100)
Message-ID:  <20041022092517.T4440@prgmr.com>
In-Reply-To: <20041021184743.G41366@carver.gumbysoft.com>
References:  <20041020125520.P29221@prgmr.com> <20041021184743.G41366@carver.gumbysoft.com>

next in thread | previous in thread | raw e-mail | index | archive | help



On Thu, 21 Oct 2004, Doug White wrote:

> On Wed, 20 Oct 2004 luke@prgmr.com wrote:
>
>>
>> I have this SunFire v40z (as far as I can tell, it is a rebadged
>> Newisys 4100.  Sopposedly, sun manufactured it, but I can't find any
...
> Why are you running this in i386 mode? Running an opteron in i386 mode +
> PAE is a waste of a perfectly good 64 bit box :)

Well, yes, but I can not run -STABLE in amd64 mode... I have to move to 
the 5.x branch for that.  I do so at home, but for this application, I 
don't feel comfortable with anything less than -STABLE.

Even so, the thing is faster than xeons, due to the superior memory 
archetecture, especially when using four processors.

>> mpt0: <LSILogic 1030 Ultra4 Adapter> port 0x2000-0x20ff mem \
>> 0xe5820000-0xe582fff f,0xe5830000-0xe583ffff irq 19 at device 4.0 on pci2
>> mpt0: error 16 creating per-cmd DMA maps
>> mpt0: Could not allocate DMA memory
>
> 16 is EBUSY, whicih makes no sense whatsoever because it never sets error
> to EBUSY.  It would only ever set it to ENOMEM or succeed. I suspect nasty
> bad memory corruption.  Can the mpt device probe correctly if you drop it
> below 4GB?

Hmm... well,  Luoqi Chen emailed me a bit ago with an answer that fixed my 
problem.  I made the suggested changes, recompiled, and the thing seems to 
work ok now.  I have pasted the relivant bits below:

From: Luoqi Chen <lchen@briontech.com>
...

It's a bug in bus_dmamap_create() code, which has been fixed in -current.
The fix is rather simple, in i386/i386/busdma_machdep.c, replace the line
         error = alloc_bounce_pages(dmat, pages);
with
         if (alloc_bounce_pages(dmat, pages) < pages)
                 error = ENOMEM;

-lq



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041022092517.T4440>