virtio: Avoid strange behaviour on removal
authorSimon Glass <sjg@chromium.org>
Tue, 17 Jan 2023 17:47:50 +0000 (10:47 -0700)
committerTom Rini <trini@konsulko.com>
Mon, 23 Jan 2023 23:11:40 +0000 (18:11 -0500)
This device does a check on removal which is better handled in the actual
test. Move it.

Signed-off-by: Simon Glass <sjg@chromium.org>
drivers/virtio/virtio_sandbox.c
test/dm/virtio_device.c

index 5484ae3..cf7761c 100644 (file)
@@ -167,18 +167,6 @@ static int virtio_sandbox_probe(struct udevice *udev)
        return 0;
 }
 
-/* check virtio device driver's remove routine was called to reset the device */
-static int virtio_sandbox_child_post_remove(struct udevice *vdev)
-{
-       u8 status;
-
-       virtio_get_status(vdev, &status);
-       if (status)
-               panic("virtio device was not reset\n");
-
-       return 0;
-}
-
 static const struct dm_virtio_ops virtio_sandbox1_ops = {
        .get_config     = virtio_sandbox_get_config,
        .set_config     = virtio_sandbox_set_config,
@@ -203,7 +191,6 @@ U_BOOT_DRIVER(virtio_sandbox1) = {
        .of_match = virtio_sandbox1_ids,
        .ops    = &virtio_sandbox1_ops,
        .probe  = virtio_sandbox_probe,
-       .child_post_remove = virtio_sandbox_child_post_remove,
        .priv_auto      = sizeof(struct virtio_sandbox_priv),
 };
 
index b5c4523..fdda4da 100644 (file)
@@ -100,6 +100,7 @@ DM_TEST(dm_test_virtio_all_ops, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
 static int dm_test_virtio_remove(struct unit_test_state *uts)
 {
        struct udevice *bus, *dev;
+       u8 status;
 
        /* check probe success */
        ut_assertok(uclass_first_device_err(UCLASS_VIRTIO, &bus));
@@ -117,6 +118,8 @@ static int dm_test_virtio_remove(struct unit_test_state *uts)
        ut_asserteq(-EKEYREJECTED, device_remove(bus, DM_REMOVE_ACTIVE_ALL));
 
        ut_asserteq(false, device_active(dev));
+       virtio_get_status(dev, &status);
+       ut_assertok(status);
 
        return 0;
 }