On Tue, Dec 09, 2014 at 09:30:55PM +0100, Alexander Bluhm wrote:
> On Tue, Nov 11, 2014 at 04:45:50PM +0100, Christian Weisgerber wrote:
> > Occasionally, when I power on my Thinkpad X230, it resets during
> > kernel autoconf: white-on-blue kernel messages -> boom! Thinkpad
> > logo.  It subsequently boots fine.  Today I finally thought to save
> > the dmesg, and it shows that the first boot was cut short at or after
> > pckbd0 attaching.
> 
> Exactly the same happens with my T430s from time to time.

Looks like it happens in config_found_sm() called from pckbc_attach_slot().
I will add more printf there.

After reboot I have this in my dmesg:

isa0 at pcib0
isadma0 at isa0
pckbc0 at isa0 port 0x60/5
func pckbc_attach, line 299: start
func pckbc_attach, line 310: call pckbc_poll_data1
func pckbc_attach, line 315: call pckbc_put8042cmd
func pckbc_attach, line 360: call pckbc_attach_slot
func pckbc_attach_slot, line 269: start
func pckbc_attach_slot, line 272: call config_found_sm
pckbd0 at pckbc0 (kbd slot)
OpenBSD 5.6-current (GENERIC.MP) #132: Tue Dec 30 13:59:30 CET 2014
    [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP

Normal output would be:

func pckbc_attach_slot, line 269: start
func pckbc_attach_slot, line 272: call config_found_sm
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
func pckbc_attach_slot, line 286: end

   262  int
   263  pckbc_attach_slot(struct pckbc_softc *sc, pckbc_slot_t slot, int force)
   264  {
   265          struct pckbc_internal *t = sc->id;
   266          struct pckbc_attach_args pa;
   267          int found;
   268  
   269  printf("func %s, line %d: start\n", __func__, __LINE__);
   270          pa.pa_tag = t;
   271          pa.pa_slot = slot;
   272  printf("func %s, line %d: call config_found_sm\n", __func__, __LINE__);
   273          found = (config_found_sm((struct device *)sc, &pa, pckbcprint,
   274              force ? pckbc_submatch_locators : pckbc_submatch) != NULL);
   275  
   276          if (found && !t->t_slotdata[slot]) {
   277                  t->t_slotdata[slot] = malloc(sizeof(struct 
pckbc_slotdata),
   278                                               M_DEVBUF, M_NOWAIT);
   279                  if (t->t_slotdata[slot] == NULL) {
   280  printf("func %s, line %d: end\n", __func__, __LINE__);
   281                          return 0;
   282                  }
   283  printf("func %s, line %d: call pckbc_init_slotdata\n", __func__, 
__LINE__);
   284                  pckbc_init_slotdata(t->t_slotdata[slot]);
   285          }
   286  printf("func %s, line %d: end\n", __func__, __LINE__);
   287          return (found);
   288  }

Reply via email to