[Qemu-devel] [PATCH] megasas: Add write function to handle write access to PCI BAR 3

2015-07-27 Thread Salva Peiró
This patch fixes a QEMU SEGFAULT when a write operation is performed on
the memory region of the PCI BAR 3 (base address space).
When a writeb(0xe000) is performed the .write function is invoked to
handle the write access, however, since the .write is not initialised,
the call to 0, causes QEMU to SEGFAULT.

Signed-off-by: Salva Peiró speir...@gmail.com
---
 hw/scsi/megasas.c | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
index 51ba9e0..a04369c 100644
--- a/hw/scsi/megasas.c
+++ b/hw/scsi/megasas.c
@@ -2202,8 +2202,15 @@ static uint64_t megasas_queue_read(void *opaque, hwaddr 
addr,
 return 0;
 }
 
+static void megasas_queue_write(void *opaque, hwaddr addr,
+   uint64_t val, unsigned size)
+{
+return;
+}
+
 static const MemoryRegionOps megasas_queue_ops = {
 .read = megasas_queue_read,
+.write = megasas_queue_write,
 .endianness = DEVICE_LITTLE_ENDIAN,
 .impl = {
 .min_access_size = 8,
-- 
2.1.4




Re: [Qemu-devel] [PATCH] megasas: Add write function to handle write access to PCI BAR 3

2015-07-27 Thread Paolo Bonzini


On 27/07/2015 10:57, Hannes Reinecke wrote:
 Acked-by: Hannes Reinecke h...@suse.com

Thanks, applied for 2.4.

Paolo



Re: [Qemu-devel] [PATCH] megasas: Add write function to handle write access to PCI BAR 3

2015-07-27 Thread Hannes Reinecke
On 07/27/2015 10:51 AM, Salva Peiró wrote:
 This patch fixes a QEMU SEGFAULT when a write operation is performed on
 the memory region of the PCI BAR 3 (base address space).
 When a writeb(0xe000) is performed the .write function is invoked to
 handle the write access, however, since the .write is not initialised,
 the call to 0, causes QEMU to SEGFAULT.
 
 Signed-off-by: Salva Peiró speir...@gmail.com
 ---
  hw/scsi/megasas.c | 7 +++
  1 file changed, 7 insertions(+)
 
 diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
 index 51ba9e0..a04369c 100644
 --- a/hw/scsi/megasas.c
 +++ b/hw/scsi/megasas.c
 @@ -2202,8 +2202,15 @@ static uint64_t megasas_queue_read(void *opaque, 
 hwaddr addr,
  return 0;
  }
  
 +static void megasas_queue_write(void *opaque, hwaddr addr,
 +   uint64_t val, unsigned size)
 +{
 +return;
 +}
 +
  static const MemoryRegionOps megasas_queue_ops = {
  .read = megasas_queue_read,
 +.write = megasas_queue_write,
  .endianness = DEVICE_LITTLE_ENDIAN,
  .impl = {
  .min_access_size = 8,
 
Yep, that's the correct fix.

Acked-by: Hannes Reinecke h...@suse.com

Cheers,

Hannes
-- 
Dr. Hannes ReineckezSeries  Storage
h...@suse.de   +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)