From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39586) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WGU1v-0001YT-8h for qemu-devel@nongnu.org; Thu, 20 Feb 2014 08:51:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WGU1m-0003n5-Ij for qemu-devel@nongnu.org; Thu, 20 Feb 2014 08:51:11 -0500 Received: from e23smtp04.au.ibm.com ([202.81.31.146]:44407) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WGU1l-0003mK-Sl for qemu-devel@nongnu.org; Thu, 20 Feb 2014 08:51:02 -0500 Received: from /spool/local by e23smtp04.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 20 Feb 2014 23:50:53 +1000 From: Alexey Kardashevskiy Date: Fri, 21 Feb 2014 00:50:41 +1100 Message-Id: <1392904246-15575-2-git-send-email-aik@ozlabs.ru> In-Reply-To: <1392904246-15575-1-git-send-email-aik@ozlabs.ru> References: <1392904246-15575-1-git-send-email-aik@ozlabs.ru> Subject: [Qemu-devel] [PATCH v5 1/6] boot: extend get_boot_devices_list() to ignore suffixes List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Alexey Kardashevskiy , Paolo Bonzini , qemu-ppc@nongnu.org, Alexander Graf , Andreas Faerber As suffixes do not make sense for sPAPR's device tree and there is no way to filter them out on the BusState::get_fw_dev_path level, let's add an ability for the external caller to specify whether to apply suffixes or not. We could handle suffixes in SLOF (ignore for now) but this would require serious rework in the node opening code in SLOF which has no obvious benefit for the currently emulated sPAPR machine. Signed-off-by: Alexey Kardashevskiy --- Changes: v4: * changed commit message about not having plans in SLOF rework as it is scary :) --- hw/nvram/fw_cfg.c | 2 +- include/sysemu/sysemu.h | 2 +- vl.c | 8 +++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index ee96c16..42fa448 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -504,7 +504,7 @@ static void fw_cfg_machine_ready(struct Notifier *n, void *data) { size_t len; FWCfgState *s = container_of(n, FWCfgState, machine_ready); - char *bootindex = get_boot_devices_list(&len); + char *bootindex = get_boot_devices_list(&len, false); fw_cfg_add_file(s, "bootorder", (uint8_t*)bootindex, len); } diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index 495dae8..2b71a4a 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -185,7 +185,7 @@ void rtc_change_mon_event(struct tm *tm); void add_boot_device_path(int32_t bootindex, DeviceState *dev, const char *suffix); -char *get_boot_devices_list(size_t *size); +char *get_boot_devices_list(size_t *size, bool ignore_suffixes); DeviceState *get_boot_device(uint32_t position); diff --git a/vl.c b/vl.c index 57e98fa..01ab7e4 100644 --- a/vl.c +++ b/vl.c @@ -1166,7 +1166,7 @@ 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) +char *get_boot_devices_list(size_t *size, bool ignore_suffixes) { FWBootEntry *i; size_t total = 0; @@ -1181,7 +1181,7 @@ char *get_boot_devices_list(size_t *size) assert(devpath); } - if (i->suffix && devpath) { + if (i->suffix && !ignore_suffixes && devpath) { size_t bootpathlen = strlen(devpath) + strlen(i->suffix) + 1; bootpath = g_malloc(bootpathlen); @@ -1189,9 +1189,11 @@ char *get_boot_devices_list(size_t *size) g_free(devpath); } else if (devpath) { bootpath = devpath; - } else { + } else if (!ignore_suffixes) { assert(i->suffix); bootpath = g_strdup(i->suffix); + } else { + bootpath = g_strdup(""); } if (total) { -- 1.8.4.rc4