]> xenbits.xensource.com Git - xenclient/toolstack.git/commitdiff
use per device msitranslate if it's set otherwise use the global one.
authorVincent Hanquez <vincent.hanquez@eu.citrix.com>
Tue, 7 Jul 2009 21:54:38 +0000 (22:54 +0100)
committerVincent Hanquez <vincent.hanquez@eu.citrix.com>
Tue, 7 Jul 2009 21:54:38 +0000 (22:54 +0100)
xenvm/vmact.ml

index 7ac8a9de07d1eb1fa810f3381197997883ca693b..7ee8facb12c75dbf1aa661e8c5134722fd7eb88a 100644 (file)
@@ -152,13 +152,22 @@ let add_devices xc xs domid state restore =
        (* add pcis *)
        List.iter (fun (devid, devs) ->
                let bind = ref false in
+               let dev_msitranslate = ref None in
                let devs = List.map (fun dev ->
                        bind := !bind || dev.pci_bind;
+                       maybe (fun x -> dev_msitranslate := Some x) dev.pci_msitranslate;
                        (dev.pci_domain, dev.pci_bus, dev.pci_slot, dev.pci_func)
                ) devs in
                if !bind then
                        Device.PCI.bind devs;
-               Device.PCI.add ~xc ~xs ~hvm:cfg.hvm ~msitranslate:cfg.global_pci_msitranslate devs domid devid
+               (* if the device has defined a msitranslate value, use it,
+                  otherwise use the global one *)
+               let msitranslate =
+                       match !dev_msitranslate with
+                       | None   -> cfg.global_pci_msitranslate
+                       | Some i -> i
+                       in
+               Device.PCI.add ~xc ~xs ~hvm:cfg.hvm ~msitranslate devs domid devid
        ) cfg.pcis;
 
        (* add device model *)