Patchwork [v4,01/15] pci: make pci_del_capability() update for w1cmask

login
register
mail settings
Submitter Isaku Yamahata
Date Oct. 18, 2010, 3:17 a.m.
Message ID <6f03a6a490832315541f4d60e7408e3a9b344290.1287371107.git.yamahata@valinux.co.jp>
Download mbox | patch
Permalink /patch/68119/
State New
Headers show

Comments

Isaku Yamahata - Oct. 18, 2010, 3:17 a.m.
When deleting pci capability, w1cmask should be 0
to make those registers writablein addition to wmask.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
---
 hw/pci.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
Michael S. Tsirkin - Oct. 18, 2010, 6:06 a.m.
On Mon, Oct 18, 2010 at 12:17:42PM +0900, Isaku Yamahata wrote:
> When deleting pci capability, w1cmask should be 0
> to make those registers writablein addition to wmask.
> 
> Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>

Applied (typo in commit message fixed).

> ---
>  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

Patch

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);