NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/52126 (mvsata Marvell 88SX6081 panics on boot)



The following reply was made to PR kern/52126; it has been noted by GNATS.

From: Frank Kardel <kardel%kardel.name@localhost>
To: gnats-bugs%netbsd.org@localhost, jdolecek%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
 netbsd-bugs%netbsd.org@localhost, prlw1%cam.ac.uk@localhost
Cc: 
Subject: Re: kern/52126 (mvsata Marvell 88SX6081 panics on boot)
Date: Fri, 20 Dec 2019 23:08:33 +0100

 The _kernel_lock() code looks very suspicious.
 
 spinouts on kernel_lock only happen while the root is not mounted 
 (start_init_exec == 0, see init_main.c):
 
     215          spins = 0;
     216          do {
     217                  splx(s);
     218                  while (__SIMPLELOCK_LOCKED_P(kernel_lock)) {
     219                          if (SPINLOCK_SPINOUT(spins)) {
     220                                  extern int start_init_exec;
     221                                  if 
 (!start_init_exec)                      <===+ looks fishy to me
     222 _KERNEL_LOCK_ABORT("spinout");   <===+
     223                          }
     224                          SPINLOCK_BACKOFF_HOOK;
     225                          SPINLOCK_SPIN_HOOK;
     226                  }
     227                  s = splvm();
     228          } while (!__cpu_simple_lock_try(kernel_lock));
     229
     230          ci->ci_biglock_count = nlocks;
 
 I have seen spinout on my machine when booting via EFI and kernel 
 messages slowly crawling up the screen
 
 causing kernel lock contention while initializing the system. After the 
 flag is set, the spinout logic is ineffective.
 
 I am missing to see the reasoning here to panic at all during startup 
 and disable the panic after initialization.
 
 IMHO the panic should be removed as it can be randomly triggered and 
 prohibit boot. And the code serves no purpose
 
 after mounting the root-fs.
 
 Frank
 
 
 
 On 12/20/19 18:05, Patrick Welche wrote:
 > The following reply was made to PR kern/52126; it has been noted by GNATS.
 >
 > From: Patrick Welche <prlw1%cam.ac.uk@localhost>
 > To: gnats-bugs%netbsd.org@localhost
 > Cc:
 > Subject: Re: kern/52126 (mvsata Marvell 88SX6081 panics on boot)
 > Date: Fri, 20 Dec 2019 17:01:50 +0000
 >
 >   Just for the record, the run up to the spinout is:
 >   
 >   ata_exec_xfer 0xfffff2bbff940038 channel 1 drive 0
 >   atastart from ata_exec_xfer, flags 0x800
 >   ata_queue_alloc_slot: channel 1 qavail 0xffffffff qact 0atastart(chp=0xffffb0001edffa20): xfer 0xfffff2bbff940038 channel 1 drive 0
 >   atastart(chp=0xffffb0001edffa20): channel 1 queue_xfer is empty
 >   atastart(chp=0xffffb0001edffa20): channel 1 queue_xfer is empty
 >   mvsata1:4: mvsata_bio: drive=0, blkno=0, bcount=512
 >   ata_exec_xfer 0xfffff2bbff940038 channel 4 drive 0
 >   atastart from ata_exec_xfer, flags 0x0
 >   ata_queue_alloc_slot: channel 4 qavail 0xffffffff qact 0atastart(chp=0xfffff2bbff46e010): xfer 0xfffff2bbff940038 channel 4 drive 0
 >   mvsata1:4: mvsata_bio_start: drive=0
 >   ata_channel_freeze_locked(chp=0xfffff2bbff46e010) -> 1
 >   ata_channel_thaw_locked(chp=0xfffff2bbff46e010) -> 0
 >   mvsata1:4: mvsata_bio_start: drive=0
 >   Kernel lock error: _kernel_lock,222: spinout
 >   
 


Home | Main Index | Thread Index | Old Index