qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2 0/4] xlnx-zynqmp: Connect the AHCI SATA device
@ 2015-08-18  0:40 Alistair Francis
  2015-08-18  0:40 ` [Qemu-devel] [PATCH v2 1/4] ahci: Separate the AHCI state structure into the header Alistair Francis
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Alistair Francis @ 2015-08-18  0:40 UTC (permalink / raw)
  To: qemu-devel, peter.maydell, crosthwaitepeter
  Cc: saipava, edgar.iglesias, jsnow, afaerber, alistair.francis

This series connects the AHCI SATA device to the ZynqMP
machine. It requires a restructure of the AHCI file to
make the AHCI state struct visible. It also requires a
small change to object_class_dynamic_cast() to return
NULL if the class doesn't have a type.

V2:
 - Macroify the number of SATA ports
 - Update the non-realise error_propagate() calls to
   use error_abort instead.

Alistair Francis (4):
  ahci: Seperate the AHCI state structure into the header
  object.c: object_class_dynamic_cast return NULL if the class has no
    type
  xlnx-zynqmp.c: Convert some of the error_propagate() calls to
    error_abort
  xlnx-zynqmp: Connect the sysbus AHCI to ZynqMP

 hw/arm/xlnx-zynqmp.c         |   33 +++++++++++++++++++++------------
 hw/ide/ahci.c                |   13 -------------
 hw/ide/ahci.h                |   14 ++++++++++++++
 include/hw/arm/xlnx-zynqmp.h |    3 +++
 qom/object.c                 |    2 +-
 5 files changed, 39 insertions(+), 26 deletions(-)

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH v2 1/4] ahci: Separate the AHCI state structure into the header
  2015-08-18  0:40 [Qemu-devel] [PATCH v2 0/4] xlnx-zynqmp: Connect the AHCI SATA device Alistair Francis
@ 2015-08-18  0:40 ` Alistair Francis
  2015-08-18 18:12   ` John Snow
  2015-08-18  0:40 ` [Qemu-devel] [PATCH v2 2/4] object.c: object_class_dynamic_cast return NULL if the class has no type Alistair Francis
  2015-08-18  0:40 ` [Qemu-devel] [PATCH v2 3/4] xlnx-zynqmp.c: Convert some of the error_propagate() calls to error_abort Alistair Francis
  2 siblings, 1 reply; 6+ messages in thread
From: Alistair Francis @ 2015-08-18  0:40 UTC (permalink / raw)
  To: qemu-devel, peter.maydell, crosthwaitepeter
  Cc: saipava, edgar.iglesias, jsnow, afaerber, alistair.francis

Pull the AHCI state structure out into the header. This allows
other containers to access the struct. This is required to add
the device to modern SoC containers.

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Reviewed-by: Sai Pavan Boddu <saipava@xilinx.com>
Reviewed-by: Peter Crosthwaite <crosthwaite.peter@gmail.com>
---

 hw/ide/ahci.c |   13 -------------
 hw/ide/ahci.h |   14 ++++++++++++++
 2 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index 48749c1..02d85fa 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -25,7 +25,6 @@
 #include <hw/pci/msi.h>
 #include <hw/i386/pc.h>
 #include <hw/pci/pci.h>
-#include <hw/sysbus.h>
 
 #include "qemu/error-report.h"
 #include "sysemu/block-backend.h"
@@ -1625,18 +1624,6 @@ const VMStateDescription vmstate_ahci = {
     },
 };
 
-#define TYPE_SYSBUS_AHCI "sysbus-ahci"
-#define SYSBUS_AHCI(obj) OBJECT_CHECK(SysbusAHCIState, (obj), TYPE_SYSBUS_AHCI)
-
-typedef struct SysbusAHCIState {
-    /*< private >*/
-    SysBusDevice parent_obj;
-    /*< public >*/
-
-    AHCIState ahci;
-    uint32_t num_ports;
-} SysbusAHCIState;
-
 static const VMStateDescription vmstate_sysbus_ahci = {
     .name = "sysbus-ahci",
     .fields = (VMStateField[]) {
diff --git a/hw/ide/ahci.h b/hw/ide/ahci.h
index 79a463d..c055d6b 100644
--- a/hw/ide/ahci.h
+++ b/hw/ide/ahci.h
@@ -24,6 +24,8 @@
 #ifndef HW_IDE_AHCI_H
 #define HW_IDE_AHCI_H
 
+#include <hw/sysbus.h>
+
 #define AHCI_MEM_BAR_SIZE         0x1000
 #define AHCI_MAX_PORTS            32
 #define AHCI_MAX_SG               168 /* hardware max is 64K */
@@ -369,4 +371,16 @@ void ahci_reset(AHCIState *s);
 
 void ahci_ide_create_devs(PCIDevice *dev, DriveInfo **hd);
 
+#define TYPE_SYSBUS_AHCI "sysbus-ahci"
+#define SYSBUS_AHCI(obj) OBJECT_CHECK(SysbusAHCIState, (obj), TYPE_SYSBUS_AHCI)
+
+typedef struct SysbusAHCIState {
+    /*< private >*/
+    SysBusDevice parent_obj;
+    /*< public >*/
+
+    AHCIState ahci;
+    uint32_t num_ports;
+} SysbusAHCIState;
+
 #endif /* HW_IDE_AHCI_H */
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH v2 2/4] object.c: object_class_dynamic_cast return NULL if the class has no type
  2015-08-18  0:40 [Qemu-devel] [PATCH v2 0/4] xlnx-zynqmp: Connect the AHCI SATA device Alistair Francis
  2015-08-18  0:40 ` [Qemu-devel] [PATCH v2 1/4] ahci: Separate the AHCI state structure into the header Alistair Francis
@ 2015-08-18  0:40 ` Alistair Francis
  2015-08-18  0:40 ` [Qemu-devel] [PATCH v2 3/4] xlnx-zynqmp.c: Convert some of the error_propagate() calls to error_abort Alistair Francis
  2 siblings, 0 replies; 6+ messages in thread
From: Alistair Francis @ 2015-08-18  0:40 UTC (permalink / raw)
  To: qemu-devel, peter.maydell, crosthwaitepeter
  Cc: saipava, edgar.iglesias, jsnow, afaerber, alistair.francis

If the ObjectClass has no type return NULL instead of trying to compare
the type name.

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Reviewed-by: Sai Pavan Boddu <saipava@xilinx.com>
---

 qom/object.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/qom/object.c b/qom/object.c
index eea8edf..2d6d715 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -603,7 +603,7 @@ ObjectClass *object_class_dynamic_cast(ObjectClass *class,
     TypeImpl *target_type;
     TypeImpl *type;
 
-    if (!class) {
+    if (!class || !class->type) {
         return NULL;
     }
 
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Qemu-devel] [PATCH v2 3/4] xlnx-zynqmp.c: Convert some of the error_propagate() calls to error_abort
  2015-08-18  0:40 [Qemu-devel] [PATCH v2 0/4] xlnx-zynqmp: Connect the AHCI SATA device Alistair Francis
  2015-08-18  0:40 ` [Qemu-devel] [PATCH v2 1/4] ahci: Separate the AHCI state structure into the header Alistair Francis
  2015-08-18  0:40 ` [Qemu-devel] [PATCH v2 2/4] object.c: object_class_dynamic_cast return NULL if the class has no type Alistair Francis
@ 2015-08-18  0:40 ` Alistair Francis
  2 siblings, 0 replies; 6+ messages in thread
From: Alistair Francis @ 2015-08-18  0:40 UTC (permalink / raw)
  To: qemu-devel, peter.maydell, crosthwaitepeter
  Cc: saipava, edgar.iglesias, jsnow, afaerber, alistair.francis

Convert all of the non-realize error_propagate() calls into error_abort
calls as they shouldn't be user visible failure cases.

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
---

 hw/arm/xlnx-zynqmp.c |   14 ++------------
 1 files changed, 2 insertions(+), 12 deletions(-)

diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
index 62ef4ce..24f37cf 100644
--- a/hw/arm/xlnx-zynqmp.c
+++ b/hw/arm/xlnx-zynqmp.c
@@ -147,12 +147,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
         g_free(name);
 
         object_property_set_int(OBJECT(&s->apu_cpu[i]), GIC_BASE_ADDR,
-                                "reset-cbar", &err);
-        if (err) {
-            error_propagate((errp), (err));
-            return;
-        }
-
+                                "reset-cbar", &error_abort);
         object_property_set_bool(OBJECT(&s->apu_cpu[i]), true, "realized",
                                  &err);
         if (err) {
@@ -185,12 +180,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
         g_free(name);
 
         object_property_set_bool(OBJECT(&s->rpu_cpu[i]), true, "reset-hivecs",
-                                 &err);
-        if (err != NULL) {
-            error_propagate(errp, err);
-            return;
-        }
-
+                                 &error_abort);
         object_property_set_bool(OBJECT(&s->rpu_cpu[i]), true, "realized",
                                  &err);
         if (err) {
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH v2 1/4] ahci: Separate the AHCI state structure into the header
  2015-08-18  0:40 ` [Qemu-devel] [PATCH v2 1/4] ahci: Separate the AHCI state structure into the header Alistair Francis
@ 2015-08-18 18:12   ` John Snow
  2015-08-24 22:43     ` Alistair Francis
  0 siblings, 1 reply; 6+ messages in thread
From: John Snow @ 2015-08-18 18:12 UTC (permalink / raw)
  To: Alistair Francis, qemu-devel, peter.maydell, crosthwaitepeter
  Cc: saipava, edgar.iglesias, afaerber



On 08/17/2015 05:40 PM, Alistair Francis wrote:
> Pull the AHCI state structure out into the header. This allows
> other containers to access the struct. This is required to add
> the device to modern SoC containers.
> 
> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
> Reviewed-by: Sai Pavan Boddu <saipava@xilinx.com>
> Reviewed-by: Peter Crosthwaite <crosthwaite.peter@gmail.com>
> ---
> 
>  hw/ide/ahci.c |   13 -------------
>  hw/ide/ahci.h |   14 ++++++++++++++
>  2 files changed, 14 insertions(+), 13 deletions(-)
> 
> diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
> index 48749c1..02d85fa 100644
> --- a/hw/ide/ahci.c
> +++ b/hw/ide/ahci.c
> @@ -25,7 +25,6 @@
>  #include <hw/pci/msi.h>
>  #include <hw/i386/pc.h>
>  #include <hw/pci/pci.h>
> -#include <hw/sysbus.h>
>  
>  #include "qemu/error-report.h"
>  #include "sysemu/block-backend.h"
> @@ -1625,18 +1624,6 @@ const VMStateDescription vmstate_ahci = {
>      },
>  };
>  
> -#define TYPE_SYSBUS_AHCI "sysbus-ahci"
> -#define SYSBUS_AHCI(obj) OBJECT_CHECK(SysbusAHCIState, (obj), TYPE_SYSBUS_AHCI)
> -
> -typedef struct SysbusAHCIState {
> -    /*< private >*/
> -    SysBusDevice parent_obj;
> -    /*< public >*/
> -
> -    AHCIState ahci;
> -    uint32_t num_ports;
> -} SysbusAHCIState;
> -
>  static const VMStateDescription vmstate_sysbus_ahci = {
>      .name = "sysbus-ahci",
>      .fields = (VMStateField[]) {
> diff --git a/hw/ide/ahci.h b/hw/ide/ahci.h
> index 79a463d..c055d6b 100644
> --- a/hw/ide/ahci.h
> +++ b/hw/ide/ahci.h
> @@ -24,6 +24,8 @@
>  #ifndef HW_IDE_AHCI_H
>  #define HW_IDE_AHCI_H
>  
> +#include <hw/sysbus.h>
> +
>  #define AHCI_MEM_BAR_SIZE         0x1000
>  #define AHCI_MAX_PORTS            32
>  #define AHCI_MAX_SG               168 /* hardware max is 64K */
> @@ -369,4 +371,16 @@ void ahci_reset(AHCIState *s);
>  
>  void ahci_ide_create_devs(PCIDevice *dev, DriveInfo **hd);
>  
> +#define TYPE_SYSBUS_AHCI "sysbus-ahci"
> +#define SYSBUS_AHCI(obj) OBJECT_CHECK(SysbusAHCIState, (obj), TYPE_SYSBUS_AHCI)
> +
> +typedef struct SysbusAHCIState {
> +    /*< private >*/
> +    SysBusDevice parent_obj;
> +    /*< public >*/
> +
> +    AHCIState ahci;
> +    uint32_t num_ports;
> +} SysbusAHCIState;
> +
>  #endif /* HW_IDE_AHCI_H */
> 

For whomever eventually merges this; if this indeed the preferred flavor
as Peter indicated:

Acked-by: John Snow <jsnow@redhat.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH v2 1/4] ahci: Separate the AHCI state structure into the header
  2015-08-18 18:12   ` John Snow
@ 2015-08-24 22:43     ` Alistair Francis
  0 siblings, 0 replies; 6+ messages in thread
From: Alistair Francis @ 2015-08-24 22:43 UTC (permalink / raw)
  To: John Snow
  Cc: Edgar Iglesias, Peter Maydell, qemu-devel@nongnu.org Developers,
	Alistair Francis, Sai Pavan Boddu, Peter Crosthwaite,
	Andreas Färber

On Tue, Aug 18, 2015 at 11:12 AM, John Snow <jsnow@redhat.com> wrote:
>
>
> On 08/17/2015 05:40 PM, Alistair Francis wrote:
>> Pull the AHCI state structure out into the header. This allows
>> other containers to access the struct. This is required to add
>> the device to modern SoC containers.
>>
>> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
>> Reviewed-by: Sai Pavan Boddu <saipava@xilinx.com>
>> Reviewed-by: Peter Crosthwaite <crosthwaite.peter@gmail.com>
>> ---
>>
>>  hw/ide/ahci.c |   13 -------------
>>  hw/ide/ahci.h |   14 ++++++++++++++
>>  2 files changed, 14 insertions(+), 13 deletions(-)
>>
>> diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
>> index 48749c1..02d85fa 100644
>> --- a/hw/ide/ahci.c
>> +++ b/hw/ide/ahci.c
>> @@ -25,7 +25,6 @@
>>  #include <hw/pci/msi.h>
>>  #include <hw/i386/pc.h>
>>  #include <hw/pci/pci.h>
>> -#include <hw/sysbus.h>
>>
>>  #include "qemu/error-report.h"
>>  #include "sysemu/block-backend.h"
>> @@ -1625,18 +1624,6 @@ const VMStateDescription vmstate_ahci = {
>>      },
>>  };
>>
>> -#define TYPE_SYSBUS_AHCI "sysbus-ahci"
>> -#define SYSBUS_AHCI(obj) OBJECT_CHECK(SysbusAHCIState, (obj), TYPE_SYSBUS_AHCI)
>> -
>> -typedef struct SysbusAHCIState {
>> -    /*< private >*/
>> -    SysBusDevice parent_obj;
>> -    /*< public >*/
>> -
>> -    AHCIState ahci;
>> -    uint32_t num_ports;
>> -} SysbusAHCIState;
>> -
>>  static const VMStateDescription vmstate_sysbus_ahci = {
>>      .name = "sysbus-ahci",
>>      .fields = (VMStateField[]) {
>> diff --git a/hw/ide/ahci.h b/hw/ide/ahci.h
>> index 79a463d..c055d6b 100644
>> --- a/hw/ide/ahci.h
>> +++ b/hw/ide/ahci.h
>> @@ -24,6 +24,8 @@
>>  #ifndef HW_IDE_AHCI_H
>>  #define HW_IDE_AHCI_H
>>
>> +#include <hw/sysbus.h>
>> +
>>  #define AHCI_MEM_BAR_SIZE         0x1000
>>  #define AHCI_MAX_PORTS            32
>>  #define AHCI_MAX_SG               168 /* hardware max is 64K */
>> @@ -369,4 +371,16 @@ void ahci_reset(AHCIState *s);
>>
>>  void ahci_ide_create_devs(PCIDevice *dev, DriveInfo **hd);
>>
>> +#define TYPE_SYSBUS_AHCI "sysbus-ahci"
>> +#define SYSBUS_AHCI(obj) OBJECT_CHECK(SysbusAHCIState, (obj), TYPE_SYSBUS_AHCI)
>> +
>> +typedef struct SysbusAHCIState {
>> +    /*< private >*/
>> +    SysBusDevice parent_obj;
>> +    /*< public >*/
>> +
>> +    AHCIState ahci;
>> +    uint32_t num_ports;
>> +} SysbusAHCIState;
>> +
>>  #endif /* HW_IDE_AHCI_H */
>>
>
> For whomever eventually merges this; if this indeed the preferred flavor
> as Peter indicated:
>
> Acked-by: John Snow <jsnow@redhat.com>

Thanks :)

>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-08-24 22:43 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-18  0:40 [Qemu-devel] [PATCH v2 0/4] xlnx-zynqmp: Connect the AHCI SATA device Alistair Francis
2015-08-18  0:40 ` [Qemu-devel] [PATCH v2 1/4] ahci: Separate the AHCI state structure into the header Alistair Francis
2015-08-18 18:12   ` John Snow
2015-08-24 22:43     ` Alistair Francis
2015-08-18  0:40 ` [Qemu-devel] [PATCH v2 2/4] object.c: object_class_dynamic_cast return NULL if the class has no type Alistair Francis
2015-08-18  0:40 ` [Qemu-devel] [PATCH v2 3/4] xlnx-zynqmp.c: Convert some of the error_propagate() calls to error_abort Alistair Francis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).