[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCHv2 4/4] qemu/pci: reset device registers on bus reset
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PATCHv2 4/4] qemu/pci: reset device registers on bus reset |
Date: |
Wed, 16 Sep 2009 13:41:09 +0300 |
User-agent: |
Mutt/1.5.19 (2009-01-05) |
Reset BARs and a couple of other registers on bus reset, as per PCI
spec.
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
hw/pci.c | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/hw/pci.c b/hw/pci.c
index 600df2f..b489d41 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -90,7 +90,20 @@ static inline int pci_bar(int reg)
static void pci_device_reset(PCIDevice *dev)
{
+ int r;
+
memset(dev->irq_state, 0, sizeof dev->irq_state);
+ dev->config[PCI_COMMAND] &= ~(PCI_COMMAND_IO | PCI_COMMAND_MEMORY |
+ PCI_COMMAND_MASTER);
+ dev->config[PCI_CACHE_LINE_SIZE] = 0x0;
+ dev->config[PCI_INTERRUPT_LINE] = 0x0;
+ for (r = 0; r < PCI_NUM_REGIONS; ++r) {
+ if (!dev->io_regions[r].size) {
+ continue;
+ }
+ pci_set_long(dev->config + pci_bar(r), dev->io_regions[r].type);
+ }
+ pci_update_mappings(dev);
}
static void pci_bus_reset(void *opaque)
--
1.6.2.5
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] [PATCHv2 4/4] qemu/pci: reset device registers on bus reset,
Michael S. Tsirkin <=