When deleting pci capability, w1cmask should be 0 to make those registers writablein addition to wmask.
Signed-off-by: Isaku Yamahata <yamah...@valinux.co.jp> --- hw/pci.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/hw/pci.c b/hw/pci.c index abddc6d..e3462a9 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -1745,6 +1745,7 @@ void pci_del_capability(PCIDevice *pdev, uint8_t cap_id, uint8_t size) pdev->config[prev] = pdev->config[offset + PCI_CAP_LIST_NEXT]; /* Make capability writeable again */ memset(pdev->wmask + offset, 0xff, size); + memset(pdev->w1cmask + offset, 0, size); /* Clear cmask as device-specific registers can't be checked */ memset(pdev->cmask + offset, 0, size); memset(pdev->used + offset, 0, size); -- 1.7.1.1