qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] megasas: Fix compilation for 32 bit hosts


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH] megasas: Fix compilation for 32 bit hosts
Date: Tue, 10 Jul 2012 08:39:15 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120329 Thunderbird/11.0.1

On 07/10/2012 12:41 AM, Stefan Weil wrote:
Cc: Hannes Reinecke<address@hidden>
Signed-off-by: Stefan Weil<address@hidden>
---
  default-configs/pci.mak |    4 ++++
  hw/megasas.c            |   13 +++++++------
  2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/default-configs/pci.mak b/default-configs/pci.mak
index 9d3e1db..120b69d 100644
--- a/default-configs/pci.mak
+++ b/default-configs/pci.mak
@@ -5,6 +5,10 @@ CONFIG_USB_UHCI=y
  CONFIG_USB_OHCI=y
  CONFIG_USB_EHCI=y
  CONFIG_USB_XHCI=y
+
+# RAID adapter
+CONFIG_MEGASAS_SCSI_PCI=y
+
  CONFIG_NE2000_PCI=y
  CONFIG_EEPRO100_PCI=y
  CONFIG_PCNET_PCI=y
diff --git a/hw/megasas.c b/hw/megasas.c
index b48836f..26cf118 100644
--- a/hw/megasas.c
+++ b/hw/megasas.c
@@ -372,12 +372,13 @@ static uint64_t megasas_fw_time(void)
      return bcd_time;
  }

-static uint64_t megasas_gen_sas_addr(uint64_t id)
+static uint64_t megasas_gen_sas_addr(void *p)
  {
+    uint64_t id = (uintptr_t)p;


I said in another note that this isn't acceptable. This sort of thing is an ABI issue so it needs to be fixed properly.

Regards,

Anthony Liguori

      uint64_t addr;

      addr = 0x5001a4aULL<<  36;
-    addr |= id&  0xfffffffff;
+    addr |= id&  0xfffffffffULL;

      return addr;
  }
@@ -672,7 +673,7 @@ static int megasas_ctrl_get_info(MegasasState *s, 
MegasasCmd *cmd)
      info.host.type = MFI_INFO_HOST_PCIX;
      info.device.type = MFI_INFO_DEV_SAS3G;
      info.device.port_count = 2;
-    info.device.port_addr[0] = cpu_to_le64(megasas_gen_sas_addr((uint64_t)s));
+    info.device.port_addr[0] = cpu_to_le64(megasas_gen_sas_addr(s));

      memcpy(info.product_name, "MegaRAID SAS 8708EM2", 20);
      snprintf(info.serial_number, 32, "QEMU%08lx",
@@ -761,7 +762,7 @@ static int megasas_mfc_get_defaults(MegasasState *s, 
MegasasCmd *cmd)
          return MFI_STAT_INVALID_PARAMETER;
      }

-    info.sas_addr = cpu_to_le64(megasas_gen_sas_addr((uint64_t)s));
+    info.sas_addr = cpu_to_le64(megasas_gen_sas_addr(s));
      info.stripe_size = 3;
      info.flush_time = 4;
      info.background_rate = 30;
@@ -891,7 +892,7 @@ static int megasas_dcmd_pd_get_list(MegasasState *s, 
MegasasCmd *cmd)
          info.addr[num_pd_disks].scsi_dev_type = sdev->type;
          info.addr[num_pd_disks].connect_port_bitmap = 0x1;
          info.addr[num_pd_disks].sas_addr[0] =
-            cpu_to_le64(megasas_gen_sas_addr((uint64_t)sdev));
+            cpu_to_le64(megasas_gen_sas_addr(sdev));
          num_pd_disks++;
          offset += sizeof(struct mfi_pd_address);
      }
@@ -994,7 +995,7 @@ static int megasas_pd_get_info_submit(SCSIDevice *sdev, int 
lun,
      info->slot_number = (sdev->id&  0xFF);
      info->path_info.count = 1;
      info->path_info.sas_addr[0] =
-        cpu_to_le64(megasas_gen_sas_addr((uint64_t)sdev));
+        cpu_to_le64(megasas_gen_sas_addr(sdev));
      info->connected_port_bitmap = 0x1;
      info->device_speed = 1;
      info->link_speed = 1;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]