Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Jul 1996 10:35:51 -0600 (MDT)
From:      Nate Williams <nate@mt.sri.com>
To:        dave edmondson <davided@sco.com>
Cc:        Nate Williams <nate@mt.sri.com>, mobile@freebsd.org, bde@freebsd.org, davidg@freebsd.org
Subject:   re: Possible fix for APM_DSVALUE_BUG
Message-ID:  <199607171635.KAA00491@rocky.mt.sri.com>
In-Reply-To: <199607171527.QAA00438@zero-gravity.netlab.london.sco.com>
References:  <199607161832.MAA25236@rocky.mt.sri.com> <199607171527.QAA00438@zero-gravity.netlab.london.sco.com>

next in thread | previous in thread | raw e-mail | index | archive | help
dave edmondson writes:
> nate, thanks for the fix.  things have improved (in some respects).
> 
> with this latest fix my tp760 will now boot, apm 1.1 is detected and
> apm mostly works (*).

> * - there are some error messages when i resume after suspend, which
>     i'm looking into, but they don't seem to be related to the above
>     problem.

Try doing this without any cards installed.  It appears that the generic
PCCARD suspend/resume code doesn't always work right.  I want to get to
it next, but I wanted to get the APM code working on everything first.

> unfortunately, the ep driver doesn't work with
> my 3c589 any more.  with the `standard' pccard.conf card configuration
> fails.  setting the interrupt to 10 (or various other values) in
> pccard.conf solves this, and the card is recognised and configuration
> proceeds.

Do you have IRQ 3 available in /etc/pccard.conf?  If so, remove it since
it's probably being used by the PCIC controller.  Also, if you have a
built-in sound-card then remove IRQ 5 as well.

> during configuration, a single page of kernel text gets
> filled with zero's.  this happens during the call to dev_attach() from
> ep_isa_registerdev() from ep_pccard_init() from allocate_driver().

Just for grins, comment out the call to ep_isa_registerdev() and see if
that does anything.  The function isn't essential to the working of the
driver and used for statistics.

> the page that gets zero'd is always the same - that surrounding the
> kdc_npx structure in i386/isa/npx.c.  the instruction that causes it
> to happen is a movl which corresponds to:
> 	kdc->kdc_next->kdc_rlink = &kdc->kdc_next
> in dev_attach().  i guess it's always the same page because npx is
> always first on my dc_list.

Hmm....  *Shot in the dark*

In the patch I sent out, I had some code that rounded it down to the
correct page that was ifdef'd out with 'unsure_if_needed' or somesuch.
Try enabling that code and disabling the code below and see if helps.

Also, does using the option APM_DSVALUE_BUG work on your box at all?

> stopping the kernel (using the debugger) before the offending
> instruction and writing to the same location myself doesn't cause the
> same behaviour.  i presume that something is messing up the page
> descriptor for this page and the vm system is demand filling it with
> zero's (will it do that whilst i'm single stepping in the debugger ?).

Bruce would be able to answer that better.

> this page being zero filled causes a panic on the next exec, because
> npxinit() gets called (and now starts with addb %al, 0(%eax) where
> %eax has some completely useless value (0x8zzzzzzz something).
> 
> at this point i'm stumped - vm stuff always does have me banging my
> head.
> 
> as an aside, my usrobotics xj2288 modem works just fine !

Great!  Let me know if any of the above suggestions work.



Nate



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