All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 0/3] Machine queue, 2018-08-17
@ 2018-08-17 18:30 Eduardo Habkost
  2018-08-17 18:30 ` [Qemu-devel] [PULL 1/3] machine: Fix coding style at machine_run_board_init() Eduardo Habkost
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Eduardo Habkost @ 2018-08-17 18:30 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, Eduardo Habkost

The following changes since commit bb16c0412a572c2c9cd44496deb3ad430bc49c1a:

  Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20180816' into staging (2018-08-16 14:35:50 +0100)

are available in the Git repository at:

  git://github.com/ehabkost/qemu.git tags/machine-next-pull-request

for you to fetch changes up to 907aac2f6af6ef775367c368b87cc1720e39d407:

  fw_cfg: ignore suffixes in the bootdevice list dependent on machine class (2018-08-16 22:27:43 -0300)

----------------------------------------------------------------
Machine queue, 2018-08-17

* Allow machine classes to specify if boot device suffixes should
  be ignored by get_boot_devices_list()
* Tiny coding style fixup

----------------------------------------------------------------

Queue for Machine Core patches


Dou Liyang (1):
  machine: Fix coding style at machine_run_board_init()

Mark Cave-Ayland (2):
  sysbus: always allow explicit_ofw_unit_address() to override address
    generation
  fw_cfg: ignore suffixes in the bootdevice list dependent on machine
    class

 include/hw/boards.h     |  1 +
 include/sysemu/sysemu.h |  2 +-
 bootdevice.c            |  5 ++++-
 hw/core/machine.c       |  3 ++-
 hw/core/sysbus.c        | 15 +++++++--------
 hw/nvram/fw_cfg.c       |  2 +-
 hw/ppc/spapr.c          |  3 ++-
 7 files changed, 18 insertions(+), 13 deletions(-)

-- 
2.18.0.rc1.1.g3f1ff2140

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

* [Qemu-devel] [PULL 1/3] machine: Fix coding style at machine_run_board_init()
  2018-08-17 18:30 [Qemu-devel] [PULL 0/3] Machine queue, 2018-08-17 Eduardo Habkost
@ 2018-08-17 18:30 ` Eduardo Habkost
  2018-08-17 18:30 ` [Qemu-devel] [PULL 2/3] sysbus: always allow explicit_ofw_unit_address() to override address generation Eduardo Habkost
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Eduardo Habkost @ 2018-08-17 18:30 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, Eduardo Habkost, Dou Liyang

From: Dou Liyang <douly.fnst@cn.fujitsu.com>

Commit 7747abf11487 ("hw/machine: Remove the Zero check of
nb_numa_nodes for numa_complete_configuration()") removed the
curly brackets.  Re-add them.

Signed-off-by: Dou Liyang <douly.fnst@cn.fujitsu.com>
Message-Id: <20180710105129.23296-1-douly.fnst@cn.fujitsu.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
[ehabkost: rewrote commit message]
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 hw/core/machine.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/hw/core/machine.c b/hw/core/machine.c
index a9aeb22f03..6b68e1218f 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -793,8 +793,9 @@ void machine_run_board_init(MachineState *machine)
     MachineClass *machine_class = MACHINE_GET_CLASS(machine);
 
     numa_complete_configuration(machine);
-    if (nb_numa_nodes)
+    if (nb_numa_nodes) {
         machine_numa_finish_cpu_init(machine);
+    }
 
     /* If the machine supports the valid_cpu_types check and the user
      * specified a CPU with -cpu check here that the user CPU is supported.
-- 
2.18.0.rc1.1.g3f1ff2140

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

* [Qemu-devel] [PULL 2/3] sysbus: always allow explicit_ofw_unit_address() to override address generation
  2018-08-17 18:30 [Qemu-devel] [PULL 0/3] Machine queue, 2018-08-17 Eduardo Habkost
  2018-08-17 18:30 ` [Qemu-devel] [PULL 1/3] machine: Fix coding style at machine_run_board_init() Eduardo Habkost
@ 2018-08-17 18:30 ` Eduardo Habkost
  2018-08-17 18:30 ` [Qemu-devel] [PULL 3/3] fw_cfg: ignore suffixes in the bootdevice list dependent on machine class Eduardo Habkost
  2018-08-20 12:21 ` [Qemu-devel] [PULL 0/3] Machine queue, 2018-08-17 Peter Maydell
  3 siblings, 0 replies; 5+ messages in thread
From: Eduardo Habkost @ 2018-08-17 18:30 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Marcel Apfelbaum, Eduardo Habkost, Mark Cave-Ayland

From: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>

Some SysBusDevices either use sysbus_init_mmio() without
sysbus_mmio_map() or the first MMIO memory region doesn't represent the
bus address, causing a firmware device path with an invalid address to
be generated.

SysBusDeviceClass does provide a virtual explicit_ofw_unit_address()
method that can be used to override this process, but it was originally intended
only as as a fallback option meaning that any existing MMIO memory regions still
take priority whilst determining the firmware device address.

There is currently only one user of explicit_ofw_unit_address() and that
is the PCI expander bridge (PXB) device which has no MMIO/PIO resources
defined. This enables us to allow explicit_ofw_unit_address() to take
priority without affecting backwards compatibility, allowing the address
to be customised as required.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <20180805112850.26063-2-mark.cave-ayland@ilande.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 hw/core/sysbus.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c
index 3c8e53b188..7ac36ad3e7 100644
--- a/hw/core/sysbus.c
+++ b/hw/core/sysbus.c
@@ -293,16 +293,8 @@ static char *sysbus_get_fw_dev_path(DeviceState *dev)
 {
     SysBusDevice *s = SYS_BUS_DEVICE(dev);
     SysBusDeviceClass *sbc = SYS_BUS_DEVICE_GET_CLASS(s);
-    /* for the explicit unit address fallback case: */
     char *addr, *fw_dev_path;
 
-    if (s->num_mmio) {
-        return g_strdup_printf("%s@" TARGET_FMT_plx, qdev_fw_name(dev),
-                               s->mmio[0].addr);
-    }
-    if (s->num_pio) {
-        return g_strdup_printf("%s@i%04x", qdev_fw_name(dev), s->pio[0]);
-    }
     if (sbc->explicit_ofw_unit_address) {
         addr = sbc->explicit_ofw_unit_address(s);
         if (addr) {
@@ -311,6 +303,13 @@ static char *sysbus_get_fw_dev_path(DeviceState *dev)
             return fw_dev_path;
         }
     }
+    if (s->num_mmio) {
+        return g_strdup_printf("%s@" TARGET_FMT_plx, qdev_fw_name(dev),
+                               s->mmio[0].addr);
+    }
+    if (s->num_pio) {
+        return g_strdup_printf("%s@i%04x", qdev_fw_name(dev), s->pio[0]);
+    }
     return g_strdup(qdev_fw_name(dev));
 }
 
-- 
2.18.0.rc1.1.g3f1ff2140

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

* [Qemu-devel] [PULL 3/3] fw_cfg: ignore suffixes in the bootdevice list dependent on machine class
  2018-08-17 18:30 [Qemu-devel] [PULL 0/3] Machine queue, 2018-08-17 Eduardo Habkost
  2018-08-17 18:30 ` [Qemu-devel] [PULL 1/3] machine: Fix coding style at machine_run_board_init() Eduardo Habkost
  2018-08-17 18:30 ` [Qemu-devel] [PULL 2/3] sysbus: always allow explicit_ofw_unit_address() to override address generation Eduardo Habkost
@ 2018-08-17 18:30 ` Eduardo Habkost
  2018-08-20 12:21 ` [Qemu-devel] [PULL 0/3] Machine queue, 2018-08-17 Peter Maydell
  3 siblings, 0 replies; 5+ messages in thread
From: Eduardo Habkost @ 2018-08-17 18:30 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel
  Cc: Marcel Apfelbaum, Eduardo Habkost, Mark Cave-Ayland

From: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>

For the older machines (such as Mac and SPARC) the DT nodes representing
bootdevices for disk nodes are irregular for mainly historical reasons.

Since the majority of bootdevice nodes for these machines either do not have a
separate disk node or require different (custom) names then it is much easier
for processing to just disable all suffixes for a particular machine.

Introduce a new ignore_boot_device_suffixes MachineClass property to control
bootdevice suffix generation, defaulting to false in order to preserve
compatibility.

Suggested-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Message-Id: <20180810124027.10698-1-mark.cave-ayland@ilande.co.uk>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 include/hw/boards.h     | 1 +
 include/sysemu/sysemu.h | 2 +-
 bootdevice.c            | 5 ++++-
 hw/nvram/fw_cfg.c       | 2 +-
 hw/ppc/spapr.c          | 3 ++-
 5 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/include/hw/boards.h b/include/hw/boards.h
index d139a431a6..f82f28468b 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -206,6 +206,7 @@ struct MachineClass {
     bool auto_enable_numa_with_memhp;
     void (*numa_auto_assign_ram)(MachineClass *mc, NodeInfo *nodes,
                                  int nb_nodes, ram_addr_t size);
+    bool ignore_boot_device_suffixes;
 
     HotplugHandler *(*get_hotplug_handler)(MachineState *machine,
                                            DeviceState *dev);
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index 76ef6196a7..8d6095d98b 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -182,7 +182,7 @@ void hmp_info_usb(Monitor *mon, const QDict *qdict);
 
 void add_boot_device_path(int32_t bootindex, DeviceState *dev,
                           const char *suffix);
-char *get_boot_devices_list(size_t *size, bool ignore_suffixes);
+char *get_boot_devices_list(size_t *size);
 
 DeviceState *get_boot_device(uint32_t position);
 void check_boot_index(int32_t bootindex, Error **errp);
diff --git a/bootdevice.c b/bootdevice.c
index 1141009114..1d225202f9 100644
--- a/bootdevice.c
+++ b/bootdevice.c
@@ -29,6 +29,7 @@
 #include "qemu/error-report.h"
 #include "sysemu/reset.h"
 #include "hw/qdev-core.h"
+#include "hw/boards.h"
 
 typedef struct FWBootEntry FWBootEntry;
 
@@ -208,11 +209,13 @@ DeviceState *get_boot_device(uint32_t position)
  * memory pointed by "size" is assigned total length of the array in bytes
  *
  */
-char *get_boot_devices_list(size_t *size, bool ignore_suffixes)
+char *get_boot_devices_list(size_t *size)
 {
     FWBootEntry *i;
     size_t total = 0;
     char *list = NULL;
+    MachineClass *mc = MACHINE_GET_CLASS(qdev_get_machine());
+    bool ignore_suffixes = mc->ignore_boot_device_suffixes;
 
     QTAILQ_FOREACH(i, &fw_boot_order, link) {
         char *devpath = NULL,  *suffix = NULL;
diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
index b23e7f64a8..d79a568f54 100644
--- a/hw/nvram/fw_cfg.c
+++ b/hw/nvram/fw_cfg.c
@@ -861,7 +861,7 @@ static void fw_cfg_machine_reset(void *opaque)
     void *ptr;
     size_t len;
     FWCfgState *s = opaque;
-    char *bootindex = get_boot_devices_list(&len, false);
+    char *bootindex = get_boot_devices_list(&len);
 
     ptr = fw_cfg_modify_file(s, "bootorder", (uint8_t *)bootindex, len);
     g_free(ptr);
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 421b2dd09b..e5d825374e 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1160,7 +1160,7 @@ static void spapr_dt_chosen(sPAPRMachineState *spapr, void *fdt)
     const char *boot_device = machine->boot_order;
     char *stdout_path = spapr_vio_stdout_path(spapr->vio_bus);
     size_t cb = 0;
-    char *bootlist = get_boot_devices_list(&cb, true);
+    char *bootlist = get_boot_devices_list(&cb);
 
     _FDT(chosen = fdt_add_subnode(fdt, 0, "chosen"));
 
@@ -3949,6 +3949,7 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
     InterruptStatsProviderClass *ispc = INTERRUPT_STATS_PROVIDER_CLASS(oc);
 
     mc->desc = "pSeries Logical Partition (PAPR compliant)";
+    mc->ignore_boot_device_suffixes = true;
 
     /*
      * We set up the default / latest behaviour here.  The class_init
-- 
2.18.0.rc1.1.g3f1ff2140

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

* Re: [Qemu-devel] [PULL 0/3] Machine queue, 2018-08-17
  2018-08-17 18:30 [Qemu-devel] [PULL 0/3] Machine queue, 2018-08-17 Eduardo Habkost
                   ` (2 preceding siblings ...)
  2018-08-17 18:30 ` [Qemu-devel] [PULL 3/3] fw_cfg: ignore suffixes in the bootdevice list dependent on machine class Eduardo Habkost
@ 2018-08-20 12:21 ` Peter Maydell
  3 siblings, 0 replies; 5+ messages in thread
From: Peter Maydell @ 2018-08-20 12:21 UTC (permalink / raw)
  To: Eduardo Habkost; +Cc: QEMU Developers, Marcel Apfelbaum

On 17 August 2018 at 19:30, Eduardo Habkost <ehabkost@redhat.com> wrote:
> The following changes since commit bb16c0412a572c2c9cd44496deb3ad430bc49c1a:
>
>   Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20180816' into staging (2018-08-16 14:35:50 +0100)
>
> are available in the Git repository at:
>
>   git://github.com/ehabkost/qemu.git tags/machine-next-pull-request
>
> for you to fetch changes up to 907aac2f6af6ef775367c368b87cc1720e39d407:
>
>   fw_cfg: ignore suffixes in the bootdevice list dependent on machine class (2018-08-16 22:27:43 -0300)
>
> ----------------------------------------------------------------
> Machine queue, 2018-08-17
>
> * Allow machine classes to specify if boot device suffixes should
>   be ignored by get_boot_devices_list()
> * Tiny coding style fixup
>
> ----------------------------------------------------------------
>
> Queue for Machine Core patches
>
>
> Dou Liyang (1):
>   machine: Fix coding style at machine_run_board_init()
>
> Mark Cave-Ayland (2):
>   sysbus: always allow explicit_ofw_unit_address() to override address
>     generation
>   fw_cfg: ignore suffixes in the bootdevice list dependent on machine
>     class

Applied, thanks.

-- PMM

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

end of thread, other threads:[~2018-08-20 12:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-17 18:30 [Qemu-devel] [PULL 0/3] Machine queue, 2018-08-17 Eduardo Habkost
2018-08-17 18:30 ` [Qemu-devel] [PULL 1/3] machine: Fix coding style at machine_run_board_init() Eduardo Habkost
2018-08-17 18:30 ` [Qemu-devel] [PULL 2/3] sysbus: always allow explicit_ofw_unit_address() to override address generation Eduardo Habkost
2018-08-17 18:30 ` [Qemu-devel] [PULL 3/3] fw_cfg: ignore suffixes in the bootdevice list dependent on machine class Eduardo Habkost
2018-08-20 12:21 ` [Qemu-devel] [PULL 0/3] Machine queue, 2018-08-17 Peter Maydell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.