Re: cardbus panic: end address is not aligned

From: Warner Losh <imp_at_bsdimp.com>
Date: Sat, 9 Jul 2011 18:02:12 -0600
I'm also interested in this problem too if it is in the CardBus layer.  This sounds like a problem with jhb's latest pci resource stuff, since that code is shared with CardBus...

Another alternative to crashdups is a serial console :)

I've not seen this, but haven't tried two ATH cards in a laptop in about three years...  Chances are really good, however, that it has nothing to do with ath, other than the specific sizes and numbers of resources it tries to allocate...

Warner

On Jul 8, 2011, at 7:19 AM, John Baldwin wrote:

> On Friday, July 08, 2011 4:48:35 am Doug Barton wrote:
>> On 07/07/2011 14:20, John Baldwin wrote:
>>> On Sunday, July 03, 2011 1:39:18 am Doug Barton wrote:
>>>> I have 2 ath-based pc-card adapters. If I put either one of them in the 
>>>> slot while the system is up, or if I try booting with them in the slot, 
>>>> I get an instant panic. The cards previously worked in -current, and 
>>>> continue to work in 8-stable and windows xp. I don't have any other 
>>>> pc-cards to compare with. Full core.txt.0 file is in my home directory 
>>>> on freefall.
>>>> 
>>>> This problem persists on r223732 but happened to me for the first time a 
>>>> week or 2 ago (haven't had time to report it previously, apologies). It 
>>>> likely originated a while before though, I don't use these cards very 
>>>> often.
>>>> 
>>>> panic: end address is not aligned
>>>> 
>>>> #1  0xffffffff80426a8a in kern_reboot (howto=260)
>>>>     at /home/svn/head/sys/kern/kern_shutdown.c:430
>>>> #2  0xffffffff80426521 in panic (fmt=Variable "fmt" is not available.
>>>> )
>>>>     at /home/svn/head/sys/kern/kern_shutdown.c:604
>>>> #3  0xffffffff8032c648 in pcib_grow_window (sc=0xfffffe0002603400,
>>>>     w=0xfffffe0002603498, type=3, start=0, end=4294967295, count=65536, 
>>>> flags=Variable "flags" is not available.
>>> 
>>> The line is here:
>>> 
>>> 	KASSERT((w->limit & ((1ul << w->step) - 1)) == (1ul << w->step) - 1,
>>> 	    ("end address is not aligned"));
>>> 
>>> Can you run kgdb and do 'frame 3' and 'p/x *w'?
>> 
>> (kgdb) frame 3
>> #3  0xffffffff8032c648 in pcib_grow_window (sc=0xfffffe0002603400,
>>    w=0xfffffe0002603498, type=3, start=0, end=4294967295, count=65536,
>> flags=Variable "flags" is not available.
>> )
>>    at /home/svn/head/sys/dev/pci/pci_pci.c:1018
>> 1018		KASSERT((w->limit & ((1ul << w->step) - 1)) == (1ul << w->step) - 1,
>> (kgdb) p/x *w
>> $1 = {base = 0x80000000, limit = 0x8800ffff, rman = {rm_list = {
>>      tqh_first = 0xfffffe0002702a00, tqh_last = 0xfffffe0002702a98},
>>    rm_mtx = 0xfffffe00024e20e0, rm_link = {tqe_next = 0xfffffe0002603520,
>>      tqe_prev = 0xfffffe0002603448}, rm_start = 0x0, rm_end = 0xffffffff,
>>    rm_type = 0x2, rm_descr = 0xfffffe0002608060}, res =
>> 0xfffffe0002702b00,
>>  reg = 0x20, valid = 0x1, mask = 0x2, step = 0x14, name =
>> 0xffffffff8071b77c}
> 
> Hmm, well that's odd.  It didn't grow it enough it seems.
> 
>>> Also, can you boot your machine, then do 'sysctl debug.bootverbose=1', insert 
>>> the card and record the messages in dmesg when it does?  (You can likely get 
>>> those out of kgdb.)
>> 
>> The system panics instantly when I insert the cards. Would a verbose
>> dmesg entry from 8.2-stable work? I can do that on the same hardware.
>> If not I can try it on -current and see if anything gets logged.
> 
> Err, if you can get a crashdump, you can use 'printf "%s", msgbufp->msg_ptr'
> in kgdb to output all of dmseg.  You can also use the 'dmesg' command against
> a crash dump directly, and if you have crashinfo enabled, the tail of the
> core.txt.N file in /var/crash will have the full dmesg in it as well.
> 
> The real messages I will want to see are in the dmesg.   Also, getting the
> output of 'devinfo -r' before you insert the card would also be helpful so
> I can see what it is growing from.
> 
> Actually, forgo all that.  Try this patch:
> 
> Index: pci_pci.c
> ===================================================================
> --- pci_pci.c	(revision 223847)
> +++ pci_pci.c	(working copy)
> _at__at_ -954,7 +954,7 _at__at_ pcib_grow_window(struct pcib_softc *sc, struct pci
> 			if (bootverbose)
> 				printf("\tback candidate range: %#lx-%#lx\n",
> 				    start_free, back);
> -			back = roundup2(back + 1, w->step) - 1;
> +			back = roundup2(back + 1, 1ul << w->step) - 1;
> 			back -= rman_get_end(w->res);
> 		} else
> 			back = 0;
> 
> -- 
> John Baldwin
> _______________________________________________
> freebsd-current_at_freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
> 
> 
Received on Sat Jul 09 2011 - 22:04:01 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:15 UTC