Re: EARLY_AP_STARTUP hangs during boot

From: John Baldwin <jhb_at_freebsd.org>
Date: Fri, 27 May 2016 07:43:43 -0700
On Friday, May 27, 2016 09:50:05 AM Gary Jennejohn wrote:
> On Thu, 26 May 2016 16:54:35 -0700
> John Baldwin <jhb_at_freebsd.org> wrote:
> 
> > On Tuesday, May 17, 2016 06:47:41 PM Gary Jennejohn wrote:
> > > On Mon, 16 May 2016 10:54:19 -0700
> > > John Baldwin <jhb_at_freebsd.org> wrote:
> > >   
> > > > On Monday, May 16, 2016 12:22:42 PM Gary Jennejohn wrote:  
> > > > > I tried out EARLY_AP_STARTUP, but the kernel hangs and I can't
> > > > > break into DDB.
> > > > > 
> > > > > I did a verbose boot and the last lines I see are related to routing
> > > > > MSI-X to various local APIC vectors.  I copied the last few lines and
> > > > > they look like this:
> > > > > 
> > > > > msi: routing MSI-X IRQ 256 to local APIC 2 vector 48
> > > > > msi: routing MSI-X IRQ 257 to local APIC 3 vector 48
> > > > > msi: routing MSI-X IRQ 258 to local APIC 4 vector 48
> > > > > msi: routing MSI-X IRQ 256 to local APIC 0 vector 49  
> > >          ^^^^^^^ Assigning  
> > > > > 
> > > > > I tried disabling msi and msix in /boot/loader.conf, but the settings
> > > > > were ignored (probabaly too early).    
> > > > 
> > > > No, those settings are not too early.  However, the routing to different
> > > > CPUs now happens earlier than it used to.  What is the line before the
> > > > MSI lines?  You can take a picture with your phone/camera if that's simplest.
> > > >   
> > > 
> > > Here a few lines before the MSI routing happens:
> > > 
> > > hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff irq 0,8 on acpi0
> > > hpet0: vendor 0x4353, rev 0x1, 14318180 Hz, 3 timers, legacy route
> > > hpet0: t0 : irqs 0x00c0ff (0), MSI, periodic
> > > hpet0: t1 : irqs 0x00c0ff (0), MSI, periodic
> > > hpet0: t2 : irqs 0x00c0ff (0), MSI, periodic
> > > Timecounter "HPET" frequency 14318180 Hz quality 950  
> > 
> > The assigning message means it is in the loop using
> > bus_bind_intr() to setup per-CPU timers.  Can you please try
> > setting 'hint.hpet.0.per_cpu=0' at the loader prompt to see if
> > disabling the use of per-CPU timers allows you to boot?
> > 
> 
> Something has changed since the last time I generated a kernel with
> this option.
> 
> Now I get a NULL-pointer dereference in the kernel, doesn't matter
> whether I set the hint or not.
> 
> No crash dump is created.
> 
> Here some trace copied from the console:
> 
> Fatal trap 12: page fault while in kernel mode
> cpuid = 0; apic id = 00
> fault virtual address = 0x1818
> fault code = supervisor write data, page not present
> instruction pointer = 0x20:0xffffffff805492ef
> [some stack trace]
> taskgroup_adjust() at taskgroup_adjust+0x2f; frame 0xffffffff8196c90
> mi_startup() at mi_startup+0x118; frame 0xffffffff8196fcb0

Yeah, I have the same on my laptop here.  I'll fix that and get back to you.

-- 
John Baldwin
Received on Fri May 27 2016 - 12:43:51 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:05 UTC