Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Sep 2004 21:30:44 -0700 (PDT)
From:      "Richard Lynch" <ceo@l-i-e.com>
To:        freebsd-mobile@freebsd.org
Subject:   hw.pci.allow_unsupported_io_range
Message-ID:  <2435.67.167.52.21.1095741044.squirrel@www.l-i-e.com>

next in thread | raw e-mail | index | archive | help
I'd really like to RTFM on hw.pci.allow_unsupported_io_range to find out
exactly what it means.

I mean, I'm sure it makes sense to the guy who wrote it, but if something
is both unsupported and allowed, I'm sure not real clear on what that
means...

I have found that it has to do with the BIOS not pre-setting memory ranges
or somesuch, but I don't really have a lot of control over what the BIOS
will set in that regard.  It's the simplest/stupidest BIOS I've ever seen.
 There ain't no settings at all of anything as complex as memory ranges
that I can recall seeing in this BIOS...  I'd go confirm that for you, if
I could safely get to the BIOS (viz.)

Google finds me thousands of pages telling me to set
allow_unsupported_io_range to 1 to make laptop XYZ work.

It would seem that every laptop on the planet needs this setting, from
Google output. :-)  That's probably not true, but there ya go.

The FreeBSD handbook tells me, in various versions and languages, to turn
it to 1 to make cardbus work on some laptops, and that in 5.3 it's going
to disappear.

[aside]
Seems to me like a butt-load of laptops are going to be affected badly by
the 5.3 release then...
[/aside]

But nowhere can I find a definition of what this setting actually means,
at least not in words I can understand.  That might be my ignorance, but
there it is.

I am failing miserably at finding out exactly what the hell I just did
when I turned it on, as the documentation suggested I do.



Did I mention that it seemed like a Real Good Idea (tm) at first?

Suddenly, all my devices had nice nifty names and corresponding /dev
special nodes and words like "firewire" and "network" came out of dmesg
for the first time.

Whoo Hooo!

This even magically made it possible to reboot (shutdown -r now) without
pulling power and battery out afterwards!! Yes!!

And my network card has a link light *AND* a blinking traffic light!!!

So, of course, the first thing I do is try to configure the bfe0 network
interface with sysinstall.

Bad Idea (tm) :-(

Right after "Setting hostname: localhost." the machine locks up.

Now, of course, the machine locks up at that same point in the boot process.

And only pulling power and battery will do anything, which is particularly
bad, since, unlike before, the hard drive is still mounted. :-( :-( :-(

"The thrill of victory; the agony of defeat" all in 10 minutes. :-^

I can boot to single-user mode, and if I knew what to poke at to make it
not try to bring the network up, I could even maybe try to figure out
what's going wrong...

OTOH, I really do NOT want to turn this network card on again if it's
going to force me to pull power on a mounted hard drive.

Don't get me wrong, but I'm starting to get just a little bit cranky
here... :-) :-) :-)

Software that forces me to pull power on a mounted hard drive... Ouch.



To summarize, in priority order:

Assuming I'm pretty much an idiot and can only handle 'cd' and 'vi' and
'mount' what do I gotta alter in single-user mode to make FreeBSD *not*
try to bring up the network?  IE, to "undo" the settings altered by
sysinstall->...configure_network->bfe0 settings.

I tried to just boot to single-user mode and do "ifconfig bfe0 down" to
get the device defaulting to "down" and re-boot, but the system was "kind
enough" to remember that bfe0 had been "up" before I messed around in
single-user mode, and tried to bring the network up again. :-(

control-C nada
ctrl-alt-delete nada
ctlr-alt-F2 [sysbeep] nada

Another power-pulling cycle on a mounted hard drive is the only recourse I
can see.  This is not good.  Any other way to get this to shutdown
cleanly?  I'm just leaving it on until I hear back from y'all...

Is there some kind of less-harsh thing I could do that is not
allow_unsupported_io_range but still get the devices to work, preferably
something that is NOT disappearing in 5.3?  I know 5.2.1 is just barely or
not quite -CURRENT, but 5.3 can't be that far away in time either.  I need
this laptop to last a hell of a lot longer than that :-)  Actually, I need
this laptop to last far longer than average, for financial reasons.

Could I just copy down ALL the memory ranges from Windows, put them into
hints.xyz.maddr/msize and be okay?  It didn't work doing it just for the
bfe device, but maybe if I did it for each one in order...

Is there some safe way of trying to bring the network up without FreeBSD
blindly assuming I want to do that on boot every time?  Because I really
don't want it to EVER try that again until I can thoroughly test that I
can bring the network up and down without pulling power on a mounted hard
drive.

Assuming I get that far, given that attempting to actually configure the
network card with an IP address using ifconfig locks up the whole machine,
what could I do to try and diagnose that anyway?

Any idea how can I get to a state where I can shutdown safely, even if the
network card locks things up?  That's badly stated... How can I insure
that the card will NOT lock things up that badly?  Or that I have a way
"in" to force a shutdown that is somehow protected from the network card
lock-up?

I'm grasping at straw here, trying to find a way to make FreeBSD work on
this hardware.  I even have (or at least had) X working, which is usually
the toughest one for me (in Linux).

Oh yes, to repeat the details of hardware/OS:

FreeBSD 5.2.1, downloaded ISOs about 2 to 3 weeks ago.
Dell Inspiron 700m laptop
Broadcom 4401-B0, PHY 0x36, vendor_id 41e4, device_id 170c

I have patched /usr/src/dev/sys/dev/if_bfe.c & if_bfereg.h so that the
device_id 170c would be recognized as a 4401 device.

I've got dmesg output and /var/log/messages and other fun stuff from
BEFORE allow_unsupported_io_range=1 here (scroll all the way down):
http://phpbootcamp.com/inspiron700m.htm

Actually, the patches to if_bfe.c/if_bfereg.h are in the same directory as
the dmesg file, so you can get to that by stripping of dmesg in the URL. 
I'll update the page to link to them once I'm sure they really really
work, and I'm 100% sure they are not at fault to lock up somebody else's
laptop. :-v

I don't have current dmesg output since, like, it's locked up...  Perhaps
with some help on the above issues, I can get that on-line in a couple
days though... [Real Life intervenes a lot on Tue/Wed for me.  Clients.]

I'd really like to get this working and move on to productive work with
FreeBSD...

Especially now, since it feels like I'm so close.

THANKS!!!

I really do appreciate all the help I'm getting on these lists -- I really
think we can get this to work and contribute more gear to the supported
list, or at least the "worked for me" lists, if that's more appropriate.

-- 
Like Music?
http://l-i-e.com/artists.htm



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