From: Vincent Hanquez Date: Wed, 29 Jul 2009 00:46:08 +0000 (+0100) Subject: fix pci to have the required id X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=213d2ad23843bbc9f3a51cea8318975e4a34a88d;p=xenclient%2Ftoolstack.git fix pci to have the required id --- diff --git a/xenvm/tasks.ml b/xenvm/tasks.ml index 73286f7..1621cdd 100644 --- a/xenvm/tasks.ml +++ b/xenvm/tasks.ml @@ -95,7 +95,9 @@ let actions_table = [ "type", R, ArgString; "mode", R, ArgString; "devtype", R, ArgString ]); (AddNic, mk_desc_args "nic-add" [ "bridge", O, ArgString; "mac", O, ArgString; "model", O, ArgString ]); - (AddPCI, mk_desc_args "pci-add" [ "domain", R, ArgInt; "bus", R, ArgInt; "slot", R, ArgInt; "func", R, ArgInt ]); + (AddPCI, mk_desc_args "pci-add" [ "id", R, ArgInt; "domain", R, ArgInt; "bus", R, ArgInt; + "slot", R, ArgInt; "func", R, ArgInt; + "msitranslate", O, ArgBool; "power_mgmt", O, ArgBool ]); (DelDisk, mk_desc "disk-del"); (DelNic, mk_desc "nic-del"); (DelPCI, mk_desc "pci-del"); diff --git a/xenvm/vmact.ml b/xenvm/vmact.ml index efe8733..a4e2637 100644 --- a/xenvm/vmact.ml +++ b/xenvm/vmact.ml @@ -678,7 +678,7 @@ let add_disk state path device ty mode devtype = Vmconfig.disk_dynadded = false; } in let cfg = get_new_config state in - (* add disk to disks *) + let cfg = { cfg with disks = cfg.disks @ [ disk ] } in set_new_config state cfg; Xenvmlib.Ok @@ -689,13 +689,14 @@ let add_nic state bridge mac model = Vmconfig.nic_model = model; } in let cfg = get_new_config state in - (* add nic to nics *) + let cfg = { cfg with nics = cfg.nics @ [ nic ] } in set_new_config state cfg; Xenvmlib.Ok -let add_pci state domain bus slot func bind msitranslate power_mgmt = +let add_pci state id domain bus slot func bind msitranslate power_mgmt = let msitranslate = may (fun b -> if b then 1 else 0) msitranslate in let power_mgmt = may (fun b -> if b then 1 else 0) power_mgmt in + let id = Int64.to_int id in let pci = { Vmconfig.pci_bind = bind; Vmconfig.pci_domain = Int64.to_int domain; @@ -706,7 +707,7 @@ let add_pci state domain bus slot func bind msitranslate power_mgmt = Vmconfig.pci_power_mgmt = power_mgmt; } in let cfg = get_new_config state in - (* add pci to pcis *) + let cfg = { cfg with pcis = cfg.pcis @ [ id, pci ] } in set_new_config state cfg; Xenvmlib.Ok diff --git a/xenvm/xenvm.ml b/xenvm/xenvm.ml index 420c59a..1ec82ba 100644 --- a/xenvm/xenvm.ml +++ b/xenvm/xenvm.ml @@ -464,6 +464,7 @@ let do_task quit state (task, args) = let model = optional_arg_nodef Tasks.args_get_string args "model" in Vmact.add_nic state bridge mac model | Tasks.AddPCI -> + let id = Tasks.args_get_int args "id" in let domain = Tasks.args_get_int args "domain" in let bus = Tasks.args_get_int args "bus" in let slot = Tasks.args_get_int args "slot" in @@ -471,7 +472,7 @@ let do_task quit state (task, args) = let bind = optional_arg true Tasks.args_get_bool args "bind" in let msitranslate = optional_arg_nodef Tasks.args_get_bool args "msitranslate" in let power_mgmt = optional_arg_nodef Tasks.args_get_bool args "power_mgmt" in - Vmact.add_pci state domain bus slot func bind msitranslate power_mgmt + Vmact.add_pci state id domain bus slot func bind msitranslate power_mgmt | Tasks.DelDisk | Tasks.DelNic | Tasks.DelPCI -> Xenvmlib.Error "not implemented" | Tasks.ListDisk | Tasks.ListNic | Tasks.ListPCI ->