ACPI crash with recent changes
Jonathan
jonathan.michael.stewart at us.army.mil
Thu Mar 4 20:57:17 PST 2004
I am fairly new to FreeBSD and *nix in general, is there a way to do
this using the cvs supfile? For example to specify specific versions
for certain files. I did read the man page for cvsup but I could not
figure out what exactly to put in the supfile if it is possible.
Jonathan
Nate Lawson wrote:
> Try reverting these two changes. This is not an ACPI problem. The fact
> that ACPI needs to allocate some memory early on in the boot for its sleep
> code is what triggers this bug.
>
> src/sys/vm/vm_contig.c:1.31
> src/sys/vm/vm_page.c:1.277
>
> http://docs.freebsd.org/cgi/getmsg.cgi?fetch=326708+0+current/cvs-src
>
> I think the bug is the loop accessing i - 1 right from the start. It may
> be correct to do: for (i = start + 1; ...
> But I don't know this section of the code.
>
> -Nate
>
> On Wed, 3 Mar 2004, Marcel Moolenaar wrote:
>
>>Did you try a kernel with ACPI compiled in? My laptop has an early
>>page fault (backtrace provided through gdb). I'll look into it
>>some more, but wanted to give you a headsup first:
>>
>>(kgdb) l *0xc066167a
>>0xc066167a is in contigmalloc1 (../../../vm/vm_contig.c:235).
>>230 }
>>231 }
>>232 mtx_lock_spin(&vm_page_queue_free_mtx);
>>233 for (i = start; i < (start + size / PAGE_SIZE); i++) {
>>234 pqtype = pga[i].queue - pga[i].pc;
>>235 if ((VM_PAGE_TO_PHYS(&pga[i]) !=
>>236 (VM_PAGE_TO_PHYS(&pga[i - 1]) + PAGE_SIZE)) ||
>>237 (pqtype != PQ_FREE)) {
>>238 start++;
>>239 goto again;
>>(kgdb) l *0xc0661920
>>0xc0661920 is in contigmalloc (../../../vm/vm_contig.c:311).
>>306 unsigned long boundary)
>>307 {
>>308 void * ret;
>>309
>>310 mtx_lock(&Giant);
>>311 ret = contigmalloc1(size, type, flags, low, high, alignment, boundary,
>>312 kernel_map);
>>313 mtx_unlock(&Giant);
>>314 return (ret);
>>315 }
>>(kgdb) l *0xc068036f
>>0xc068036f is in bus_dmamem_alloc (../../../i386/i386/busdma_machdep.c:430).
>>425 /*
>>426 * XXX Use Contigmalloc until it is merged into this facility
>>427 * and handles multi-seg allocations. Nobody is doing
>>428 * multi-seg allocations yet though.
>>429 */
>>430 *vaddr = contigmalloc(dmat->maxsize, M_DEVBUF, mflags,
>>431 0ul, dmat->lowaddr, dmat->alignment? dmat->alignment : 1ul,
>>432 dmat->boundary);
>>433 }
>>434 if (*vaddr == NULL)
>>(kgdb) l *0xc067efcf
>>0xc067efcf is in acpi_alloc_wakeup_handler (../../../i386/acpica/acpi_wakeup.c:318).
>>313 &Giant, &acpi_waketag) != 0) {
>>314 printf("acpi_alloc_wakeup_handler: can't create wake tag\n");
>>315 return;
>>316 }
>>317
>>318 if (bus_dmamem_alloc(acpi_waketag, (void **)&acpi_wakeaddr,
>>319 BUS_DMA_NOWAIT, &acpi_wakemap)) {
>>320 printf("acpi_alloc_wakeup_handler: can't alloc wake memory\n");
>>321 return;
>>322 }
>>(kgdb) l *0xc053ff66
>>0xc053ff66 is in mi_startup (../../../kern/init_main.c:215).
>>210
>>211 /* Call function */
>>212 (*((*sipp)->func))((*sipp)->udata);
>>213
>>214 /* Check off the one we're just done */
>>215 (*sipp)->subsystem = SI_SUB_DONE;
>>216
>>217 /* Check if we've installed more sysinit items via KLD */
>>218 if (newsysinit != NULL) {
>>219 if (sysinit != SET_BEGIN(sysinit_set))
>>
>>--
>> Marcel Moolenaar USPA: A-39004 marcel at xcllnt.net
>>
>
> _______________________________________________
> 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"
>
More information about the freebsd-current
mailing list