[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH 1/1] Assign correct address type to spapr-vlan and spapr-vty.



Hi Daniel and Eric,

Would you please help review it?
Thanks a lot. :)

On 05/29/2012 04:35 PM, Li Zhang wrote:
For pseires guest, spapr-vlan and spapr-vty is based
on spapr-vio address. According to model of network
device, the address type should be assigned automatically.
For serial device, serial pty device is recognized as
spapr-vty device, which is also on spapr-vio.

So this patch is to correct the address type of
spapr-vlan and spapr-vty, and build correct
command line of spapr-vty.

Signed-off-by: Li Zhang<zhlcindy linux vnet ibm com>
Reviewed-by:   Michael Ellerman<michaele au1 ibm com>
---
  src/qemu/qemu_command.c |   31 +++++++++++++++++++++----------
  1 file changed, 21 insertions(+), 10 deletions(-)

diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 9f99dce..3555756 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -790,6 +790,9 @@ int qemuDomainAssignSpaprVIOAddresses(virDomainDefPtr def)
      /* Default values match QEMU. See spapr_(llan|vscsi|vty).c */

      for (i = 0 ; i<  def->nnets; i++) {
+        if (def->nets[i]->model&&
+            STREQ(def->nets[i]->model, "spapr-vlan"))
+            def->nets[i]->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO;
          rc = qemuAssignSpaprVIOAddress(def,&def->nets[i]->info,
                                         0x1000ul);
          if (rc)
@@ -802,16 +805,20 @@ int qemuDomainAssignSpaprVIOAddresses(virDomainDefPtr def)
              def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
              model = qemuDefaultScsiControllerModel(def);
          if (model == VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI&&
-            def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI) {
+            def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
              def->controllers[i]->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO;
-            rc = qemuAssignSpaprVIOAddress(def,&def->controllers[i]->info,
-                                           0x2000ul);
-            if (rc)
-                return rc;
-        }
+        rc = qemuAssignSpaprVIOAddress(def,&def->controllers[i]->info,
+                                       0x2000ul);
+        if (rc)
+            return rc;
      }

      for (i = 0 ; i<  def->nserials; i++) {
+        if (def->serials[i]->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL&&
+            def->serials[i]->source.type == VIR_DOMAIN_CHR_TYPE_PTY&&
+            STREQ(def->os.arch, "ppc64")&&
+            STREQ(def->os.machine, "pseries"))
+            def->serials[i]->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO;
          rc = qemuAssignSpaprVIOAddress(def,&def->serials[i]->info,
                                         0x30000000ul);
          if (rc)
@@ -6175,10 +6182,14 @@ qemuBuildChrDeviceStr(virDomainChrDefPtr serial,
      virBuffer cmd = VIR_BUFFER_INITIALIZER;

      if (STREQ(os_arch, "ppc64")&&  STREQ(machine, "pseries")) {
-        virBufferAsprintf(&cmd, "spapr-vty,chardev=char%s",
-                          serial->info.alias);
-        if (qemuBuildDeviceAddressStr(&cmd,&serial->info, qemuCaps)<  0)
-            goto error;
+        if (serial->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL&&
+            serial->source.type == VIR_DOMAIN_CHR_TYPE_PTY&&
+            serial->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO) {
+            virBufferAsprintf(&cmd, "spapr-vty,chardev=char%s",
+                              serial->info.alias);
+            if (qemuBuildDeviceAddressStr(&cmd,&serial->info, qemuCaps)<  0)
+                goto error;
+        }
      } else
          virBufferAsprintf(&cmd, "isa-serial,chardev=char%s,id=%s",
                            serial->info.alias, serial->info.alias);


--
Best Regards
Li

IBM LTC, China System&Technology Lab, Beijing


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]