diff mbox

xen/pass-through: fold host PCI command register writes

Message ID 555606B3020000780007A8F1@mail.emea.novell.com
State New
Headers show

Commit Message

Jan Beulich May 15, 2015, 12:46 p.m. UTC
The code introduced to address XSA-126 allows simplification of other
code in xen_pt_initfn(): All we need to do is update "cmd" suitably,
as it'll be written back to the host register near the end of the
function anyway.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

Comments

Jan Beulich June 1, 2015, 6:55 a.m. UTC | #1
Ping?

>>> On 15.05.15 at 14:46, <JBeulich@suse.com> wrote:
> The code introduced to address XSA-126 allows simplification of other
> code in xen_pt_initfn(): All we need to do is update "cmd" suitably,
> as it'll be written back to the host register near the end of the
> function anyway.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> --- a/hw/xen/xen_pt.c
> +++ b/hw/xen/xen_pt.c
> @@ -698,10 +698,7 @@ static int xen_pt_initfn(PCIDevice *d)
>                     machine_irq, pirq, rc);
>  
>          /* Disable PCI intx assertion (turn on bit10 of devctl) */
> -        xen_host_pci_set_word(&s->real_device,
> -                              PCI_COMMAND,
> -                              pci_get_word(s->dev.config + PCI_COMMAND)
> -                              | PCI_COMMAND_INTX_DISABLE);
> +        cmd |= PCI_COMMAND_INTX_DISABLE;
>          machine_irq = 0;
>          s->machine_irq = 0;
>      } else {
> @@ -723,9 +720,7 @@ static int xen_pt_initfn(PCIDevice *d)
>                         e_intx, rc);
>  
>              /* Disable PCI intx assertion (turn on bit10 of devctl) */
> -            xen_host_pci_set_word(&s->real_device, PCI_COMMAND,
> -                                  *(uint16_t *)(&s->dev.config[PCI_COMMAND])
> -                                  | PCI_COMMAND_INTX_DISABLE);
> +            cmd |= PCI_COMMAND_INTX_DISABLE;
>              xen_pt_mapped_machine_irq[machine_irq]--;
>  
>              if (xen_pt_mapped_machine_irq[machine_irq] == 0) {
> 
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org 
> http://lists.xen.org/xen-devel
Stefano Stabellini June 5, 2015, 11:05 a.m. UTC | #2
On Fri, 15 May 2015, Jan Beulich wrote:
> The code introduced to address XSA-126 allows simplification of other
> code in xen_pt_initfn(): All we need to do is update "cmd" suitably,
> as it'll be written back to the host register near the end of the
> function anyway.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>

I'll add it to my queue.


> --- a/hw/xen/xen_pt.c
> +++ b/hw/xen/xen_pt.c
> @@ -698,10 +698,7 @@ static int xen_pt_initfn(PCIDevice *d)
>                     machine_irq, pirq, rc);
>  
>          /* Disable PCI intx assertion (turn on bit10 of devctl) */
> -        xen_host_pci_set_word(&s->real_device,
> -                              PCI_COMMAND,
> -                              pci_get_word(s->dev.config + PCI_COMMAND)
> -                              | PCI_COMMAND_INTX_DISABLE);
> +        cmd |= PCI_COMMAND_INTX_DISABLE;
>          machine_irq = 0;
>          s->machine_irq = 0;
>      } else {
> @@ -723,9 +720,7 @@ static int xen_pt_initfn(PCIDevice *d)
>                         e_intx, rc);
>  
>              /* Disable PCI intx assertion (turn on bit10 of devctl) */
> -            xen_host_pci_set_word(&s->real_device, PCI_COMMAND,
> -                                  *(uint16_t *)(&s->dev.config[PCI_COMMAND])
> -                                  | PCI_COMMAND_INTX_DISABLE);
> +            cmd |= PCI_COMMAND_INTX_DISABLE;
>              xen_pt_mapped_machine_irq[machine_irq]--;
>  
>              if (xen_pt_mapped_machine_irq[machine_irq] == 0) {
> 
> 
>
diff mbox

Patch

--- a/hw/xen/xen_pt.c
+++ b/hw/xen/xen_pt.c
@@ -698,10 +698,7 @@  static int xen_pt_initfn(PCIDevice *d)
                    machine_irq, pirq, rc);
 
         /* Disable PCI intx assertion (turn on bit10 of devctl) */
-        xen_host_pci_set_word(&s->real_device,
-                              PCI_COMMAND,
-                              pci_get_word(s->dev.config + PCI_COMMAND)
-                              | PCI_COMMAND_INTX_DISABLE);
+        cmd |= PCI_COMMAND_INTX_DISABLE;
         machine_irq = 0;
         s->machine_irq = 0;
     } else {
@@ -723,9 +720,7 @@  static int xen_pt_initfn(PCIDevice *d)
                        e_intx, rc);
 
             /* Disable PCI intx assertion (turn on bit10 of devctl) */
-            xen_host_pci_set_word(&s->real_device, PCI_COMMAND,
-                                  *(uint16_t *)(&s->dev.config[PCI_COMMAND])
-                                  | PCI_COMMAND_INTX_DISABLE);
+            cmd |= PCI_COMMAND_INTX_DISABLE;
             xen_pt_mapped_machine_irq[machine_irq]--;
 
             if (xen_pt_mapped_machine_irq[machine_irq] == 0) {