Re: ACPI crash with recent changes

From: Jonathan <jonathan.michael.stewart_at_us.army.mil>
Date: Thu, 04 Mar 2004 23:56:53 -0500
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"
> 
Received on Thu Mar 04 2004 - 19:57:16 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:46 UTC