From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37622) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WzEVy-0001lv-Df for qemu-devel@nongnu.org; Mon, 23 Jun 2014 20:23:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WzEVm-00045U-Kl for qemu-devel@nongnu.org; Mon, 23 Jun 2014 20:23:10 -0400 Received: from e23smtp01.au.ibm.com ([202.81.31.143]:47184) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WzEVl-00044H-RH for qemu-devel@nongnu.org; Mon, 23 Jun 2014 20:22:58 -0400 Received: from /spool/local by e23smtp01.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 24 Jun 2014 10:22:54 +1000 Message-ID: <53A8C4DB.7080408@au1.ibm.com> Date: Tue, 24 Jun 2014 10:22:51 +1000 From: Sam Bobroff MIME-Version: 1.0 References: In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] [PATCH 3/4] spapr: Fix RTAS sysparm DIAGNOSTICS_RUN_MODE List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org This allows the ibm,get-system-parameter RTAS call to succeed for the DIAGNOSTICS_RUN_MODE system parameter. The problem can be seen with "ppc64_cpu --run-mode" from the powerpc-utils package which fails before this patch with "Machine does not support diagnostic run mode". This is corrected by using the rtas_st_buffer() function to write to the buffer. The function return value code is also slightly simplified. Signed-off-by: Sam Bobroff --- hw/ppc/spapr_rtas.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c index 4f87673..8d94845 100644 --- a/hw/ppc/spapr_rtas.c +++ b/hw/ppc/spapr_rtas.c @@ -236,19 +236,18 @@ static void rtas_ibm_get_system_parameter(PowerPCCPU *cpu, target_ulong parameter = rtas_ld(args, 0); target_ulong buffer = rtas_ld(args, 1); target_ulong length = rtas_ld(args, 2); - target_ulong ret = RTAS_OUT_NOT_SUPPORTED; + target_ulong ret = RTAS_OUT_SUCCESS; + uint8_t zero = 0; switch (parameter) { case DIAGNOSTICS_RUN_MODE: - if (length == 1) { - rtas_st(buffer, 0, 0); - ret = RTAS_OUT_SUCCESS; - } + rtas_st_buffer(buffer, length, &zero, sizeof zero); break; case UUID: rtas_st_buffer(buffer, length, qemu_uuid, (qemu_uuid_set ? 16 : 0)); - ret = RTAS_OUT_SUCCESS; break; + default: + ret = RTAS_OUT_NOT_SUPPORTED; } rtas_st(rets, 0, ret); -- 1.9.0