summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbryanv <bryanv@FreeBSD.org>2013-09-01 04:20:23 +0000
committerbryanv <bryanv@FreeBSD.org>2013-09-01 04:20:23 +0000
commita9e07a227ed77a42f0ffc03714a5dee3148e6bcc (patch)
tree9acaab66def82fcd9a66ce202baca1a639dcbf89
parentf175a1e7f9ee74ccf0005d916bdd3fc622355974 (diff)
downloadFreeBSD-src-a9e07a227ed77a42f0ffc03714a5dee3148e6bcc.zip
FreeBSD-src-a9e07a227ed77a42f0ffc03714a5dee3148e6bcc.tar.gz
Add optional VirtIO device method for post-attach notifications
This is called after the parent device (ie virito_pci) has completed the device attachment/initialization.
-rw-r--r--sys/dev/virtio/pci/virtio_pci.c4
-rw-r--r--sys/dev/virtio/virtio_if.m12
2 files changed, 15 insertions, 1 deletions
diff --git a/sys/dev/virtio/pci/virtio_pci.c b/sys/dev/virtio/pci/virtio_pci.c
index b3df3d9..dcd82ec 100644
--- a/sys/dev/virtio/pci/virtio_pci.c
+++ b/sys/dev/virtio/pci/virtio_pci.c
@@ -757,8 +757,10 @@ vtpci_probe_and_attach_child(struct vtpci_softc *sc)
vtpci_release_child_resources(sc);
/* Reset status for future attempt. */
vtpci_set_status(dev, VIRTIO_CONFIG_STATUS_ACK);
- } else
+ } else {
vtpci_set_status(dev, VIRTIO_CONFIG_STATUS_DRIVER_OK);
+ VIRTIO_ATTACH_COMPLETED(child);
+ }
}
static int
diff --git a/sys/dev/virtio/virtio_if.m b/sys/dev/virtio/virtio_if.m
index 9a99d37..521f4b8 100644
--- a/sys/dev/virtio/virtio_if.m
+++ b/sys/dev/virtio/virtio_if.m
@@ -31,6 +31,18 @@ INTERFACE virtio;
CODE {
static int
+ virtio_default_attach_completed(device_t dev)
+ {
+ return (0);
+ }
+};
+
+METHOD int attach_completed {
+ device_t dev;
+} DEFAULT virtio_default_attach_completed;
+
+CODE {
+ static int
virtio_default_config_change(device_t dev)
{
return (0);
OpenPOWER on IntegriCloud