Index: uspace/drv/bus/usb/uhci/hc.c
===================================================================
--- uspace/drv/bus/usb/uhci/hc.c	(revision 832cbe7f6539badd99e8e5715f4a59e044c65c44)
+++ uspace/drv/bus/usb/uhci/hc.c	(revision 8300c7235387052a3ffb96accd6cc6528ea75b5b)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2025 Jiri Svoboda
  * Copyright (c) 2011 Jan Vesely
  * Copyright (c) 2018 Ondrej Hlavaty, Petr Manek
@@ -267,4 +268,27 @@
 }
 
+/** Quiesce host controller.
+ *
+ * @param[in] instance Host controller structure to use.
+ */
+int hc_quiesce(hc_device_t *hcd)
+{
+	hc_t *instance = hcd_to_hc(hcd);
+	uhci_regs_t *registers = instance->registers;
+
+	/* Reset everything, who knows what touched it before us */
+	pio_write_16(&registers->usbcmd, UHCI_CMD_GLOBAL_RESET);
+	fibril_usleep(50000); /* 50ms according to USB spec(root hub reset) */
+	pio_write_16(&registers->usbcmd, 0);
+
+	/* Reset hc, all states and counters. Hope that hw is not broken */
+	pio_write_16(&registers->usbcmd, UHCI_CMD_HCRESET);
+	do {
+		fibril_usleep(10);
+	} while ((pio_read_16(&registers->usbcmd) & UHCI_CMD_HCRESET) != 0);
+
+	return EOK;
+}
+
 /** Initialize UHCI hc hw resources.
  *
Index: uspace/drv/bus/usb/uhci/hc.h
===================================================================
--- uspace/drv/bus/usb/uhci/hc.h	(revision 832cbe7f6539badd99e8e5715f4a59e044c65c44)
+++ uspace/drv/bus/usb/uhci/hc.h	(revision 8300c7235387052a3ffb96accd6cc6528ea75b5b)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2025 Jiri Svoboda
  * Copyright (c) 2011 Jan Vesely
  * Copyright (c) 2018 Ondrej Hlavaty
@@ -164,4 +165,5 @@
 extern errno_t hc_setup_roothub(hc_device_t *);
 extern errno_t hc_gone(hc_device_t *);
+extern errno_t hc_quiesce(hc_device_t *);
 
 #endif
Index: uspace/drv/bus/usb/uhci/main.c
===================================================================
--- uspace/drv/bus/usb/uhci/main.c	(revision 832cbe7f6539badd99e8e5715f4a59e044c65c44)
+++ uspace/drv/bus/usb/uhci/main.c	(revision 8300c7235387052a3ffb96accd6cc6528ea75b5b)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2025 Jiri Svoboda
  * Copyright (c) 2011 Vojtech Horky, Jan Vesely
  * Copyright (c) 2018 Ondrej Hlavaty, Petr Manek
@@ -61,4 +62,5 @@
 	.setup_root_hub = hc_setup_roothub,
 	.hc_gone = hc_gone,
+	.hc_quiesce = hc_quiesce
 };
 
Index: uspace/drv/bus/usb/xhci/hc.c
===================================================================
--- uspace/drv/bus/usb/xhci/hc.c	(revision 832cbe7f6539badd99e8e5715f4a59e044c65c44)
+++ uspace/drv/bus/usb/xhci/hc.c	(revision 8300c7235387052a3ffb96accd6cc6528ea75b5b)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2025 Jiri Svoboda
  * Copyright (c) 2018 Ondrej Hlavaty, Petr Manek, Jaroslav Jindrak, Jan Hrach, Michal Staruch
  * All rights reserved.
@@ -746,4 +747,14 @@
 }
 
+/**
+ * Quiesce host controller.
+ */
+errno_t hc_quiesce(xhci_hc_t *hc)
+{
+	hc_stop(hc);
+	usb_log_info("HC quiesced.");
+	return EOK;
+}
+
 unsigned hc_speed_to_psiv(usb_speed_t speed)
 {
Index: uspace/drv/bus/usb/xhci/hc.h
===================================================================
--- uspace/drv/bus/usb/xhci/hc.h	(revision 832cbe7f6539badd99e8e5715f4a59e044c65c44)
+++ uspace/drv/bus/usb/xhci/hc.h	(revision 8300c7235387052a3ffb96accd6cc6528ea75b5b)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2025 Jiri Svoboda
  * Copyright (c) 2018 Ondrej Hlavaty, Jan Hrach, Jaroslav Jindrak, Petr Manek
  * All rights reserved.
@@ -119,4 +120,5 @@
 extern errno_t hc_start(xhci_hc_t *);
 extern void hc_fini(xhci_hc_t *);
+extern errno_t hc_quiesce(xhci_hc_t *);
 
 extern void hc_ring_doorbell(xhci_hc_t *, unsigned, unsigned);
Index: uspace/drv/bus/usb/xhci/main.c
===================================================================
--- uspace/drv/bus/usb/xhci/main.c	(revision 832cbe7f6539badd99e8e5715f4a59e044c65c44)
+++ uspace/drv/bus/usb/xhci/main.c	(revision 8300c7235387052a3ffb96accd6cc6528ea75b5b)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2025 Jiri Svoboda
  * Copyright (c) 2018 Ondrej Hlavaty, Petr Manek
  * All rights reserved.
@@ -94,4 +95,11 @@
 }
 
+static errno_t hcd_hc_quiesce(hc_device_t *hcd)
+{
+	xhci_hc_t *hc = hcd_to_hc(hcd);
+	hc_quiesce(hc);
+	return EOK;
+}
+
 static const hc_driver_t xhci_driver = {
 	.name = NAME,
@@ -103,4 +111,5 @@
 	.start = hcd_start,
 	.hc_gone = hcd_hc_gone,
+	.hc_quiesce = hcd_hc_quiesce
 };
 
Index: uspace/drv/nic/e1k/e1k.c
===================================================================
--- uspace/drv/nic/e1k/e1k.c	(revision 832cbe7f6539badd99e8e5715f4a59e044c65c44)
+++ uspace/drv/nic/e1k/e1k.c	(revision 8300c7235387052a3ffb96accd6cc6528ea75b5b)
@@ -1,3 +1,4 @@
 /*
+ * Copyright (c) 2025 Jiri Svoboda
  * Copyright (c) 2011 Zdenek Bouska
  * All rights reserved.
@@ -220,8 +221,10 @@
 
 static errno_t e1000_dev_add(ddf_dev_t *);
+static errno_t e1000_dev_quiesce(ddf_dev_t *);
 
 /** Basic driver operations for E1000 driver */
 static driver_ops_t e1000_driver_ops = {
-	.dev_add = e1000_dev_add
+	.dev_add = e1000_dev_add,
+	.dev_quiesce = e1000_dev_quiesce
 };
 
@@ -2223,4 +2226,24 @@
 }
 
+/** Quiesce E1000 device.
+ *
+ * @param dev E1000 device.
+ *
+ */
+errno_t e1000_dev_quiesce(ddf_dev_t *dev)
+{
+	nic_t *nic = ddf_dev_data_get(dev);
+	e1000_t *e1000 = DRIVER_DATA_NIC(nic);
+	errno_t rc;
+
+	ddf_msg(LVL_DEBUG, "e1000_dev_quiesce()");
+
+	e1000_disable_interrupts(e1000);
+	rc = e1000_reset(nic);
+	if (rc != EOK)
+		ddf_msg(LVL_ERROR, "e1000_dev_quiesce failed");
+	return rc;
+}
+
 /** Read 16-bit value from EEPROM of E1000 adapter
  *
