aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board-qemu/slof/virtio-serial.fs12
-rw-r--r--slof/fs/client.fs5
2 files changed, 8 insertions, 9 deletions
diff --git a/board-qemu/slof/virtio-serial.fs b/board-qemu/slof/virtio-serial.fs
index a99293f..e307231 100644
--- a/board-qemu/slof/virtio-serial.fs
+++ b/board-qemu/slof/virtio-serial.fs
@@ -19,13 +19,8 @@ virtio-setup-vd VALUE virtiodev
\ Quiescence the virtqueue of this device so that no more background
\ transactions can be pending.
: shutdown ( -- )
- initialized? IF
- my-phandle node>path open-dev ?dup IF
- virtiodev virtio-serial-shutdown
- close-dev
- THEN
- FALSE to initialized?
- THEN
+ virtiodev virtio-serial-shutdown
+ FALSE to initialized?
;
: virtio-serial-term-emit
@@ -39,7 +34,6 @@ virtio-setup-vd VALUE virtiodev
: init ( -- )
virtiodev virtio-serial-init drop
TRUE to initialized?
- ['] shutdown add-quiesce-xt
;
0 VALUE open-count
@@ -58,7 +52,7 @@ virtiodev virtio-serial-init drop
: close
open-count 0> IF
open-count 1 - dup to open-count
- 0= IF close THEN
+ 0= IF shutdown THEN
THEN
close
;
diff --git a/slof/fs/client.fs b/slof/fs/client.fs
index db7a192..76231f9 100644
--- a/slof/fs/client.fs
+++ b/slof/fs/client.fs
@@ -203,6 +203,11 @@ ALSO client-voc DEFINITIONS
\ End of life of SLOF now, call platform quiesce as quiesce
\ is an undocumented extension and not everybody supports it
close-dev
+ \ Some device, eg. virtio-serial, need all instances to be
+ \ closed in order to be reset properly
+ s" stdout" get-chosen IF
+ decode-int nip nip close-dev
+ THEN
quiesce
ELSE
close-dev