Use spin mutex to fix a panic
The GPIO part of wbsio(4) has a lock to keep the register access order. In addition to the lock, gpio(4) has a look to prevent multiple control through gpio_pin_ctl(). Those locks hold at once when gpio_pin_ctl() is called, and the lock of gpio(4) hold before that of wbsio(4). Therefore, the wbsio(4) has to use spin lock if gpio(4) uses spin lock.
This commit is contained in:
parent
9a87af0fbd
commit
bb9c38f4bf
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: wbsio.c,v 1.23 2018/03/07 09:25:56 msaitoh Exp $ */
|
||||
/* $NetBSD: wbsio.c,v 1.24 2018/04/25 08:29:45 yamaguchi Exp $ */
|
||||
/* $OpenBSD: wbsio.c,v 1.10 2015/03/14 03:38:47 jsg Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008 Mark Kettenis <kettenis@openbsd.org>
|
||||
@ -547,7 +547,7 @@ wbsio_gpio_rt_init(struct wbsio_softc *sc)
|
||||
aprint_normal_dev(sc->sc_dev, "GPIO: port 0x%x-0x%x\n",
|
||||
iobase, iobase + WBSIO_GPIO_IOSIZE);
|
||||
|
||||
mutex_init(&sc->sc_gpio_lock, MUTEX_DEFAULT, IPL_NONE);
|
||||
mutex_init(&sc->sc_gpio_lock, MUTEX_DEFAULT, IPL_VM);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user