From patchwork Mon Jan 7 04:30:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amitay Isaacs X-Patchwork-Id: 1021168 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 43Y2WF6Td8z9sD4 for ; Mon, 7 Jan 2019 15:30:33 +1100 (AEDT) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=ozlabs.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="pX2hFujR"; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 43Y2WF4hG9zDqFF for ; Mon, 7 Jan 2019 15:30:33 +1100 (AEDT) X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Received: from ozlabs.org (bilbo.ozlabs.org [203.11.71.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 43Y2W85pPmzDqDq for ; Mon, 7 Jan 2019 15:30:28 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dmarc=none (p=none dis=none) header.from=ozlabs.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="pX2hFujR"; dkim-atps=neutral Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPSA id 43Y2W83XjBz9sD4; Mon, 7 Jan 2019 15:30:28 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ozlabs.org; s=201707; t=1546835428; bh=Esl9Rv7dWRjtBS62Qn5XHWDZUbzJSyFYDAMr3vjA/lk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pX2hFujRNESjZxN/4AzIFfuun46Xb9hhzXZoJJumx/ty90xPL4uZZ87UGdbprULQe AI7CdKUuKaj3xv2lR4hplLPtKLRz24IAdpP2BQy+GmF8iggUffU9TaoogfbGY3T/rG gKl9X4Qfo2IbucqmDGOiSWpI1VLtR0r9U0ja7ENr94oMstesUZKnNq9UODMPOWg9ts fv8Oinq3C7eYfRdhQ0yzaxNfSdtdMJRRQgM8dyV/bDroc/kh2cn5e0RSK5rM+IDig4 ksAv/iFEFeNkELBH5YEmog7N88VRDIzaaGqoy9xWzcx49kAJea3Eg4QPHyyOt/zsbO ylYYYy0m0OGtA== From: Amitay Isaacs To: pdbg@lists.ozlabs.org Date: Mon, 7 Jan 2019 15:30:16 +1100 Message-Id: <20190107043020.145107-2-amitay@ozlabs.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190107043020.145107-1-amitay@ozlabs.org> References: <20190107043020.145107-1-amitay@ozlabs.org> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 1/5] adu: Convert __adu_{get, put}mem_blocksize to adu functions X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amitay Isaacs Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" This will help add a generic read/write methods for adu class. Signed-off-by: Amitay Isaacs --- libpdbg/adu.c | 76 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 23 deletions(-) diff --git a/libpdbg/adu.c b/libpdbg/adu.c index 5cb1373..b2e80ee 100644 --- a/libpdbg/adu.c +++ b/libpdbg/adu.c @@ -110,17 +110,13 @@ uint8_t blog2(uint8_t x) } } -static int __adu_getmem_blocksize(struct pdbg_target *adu_target, uint64_t start_addr, - uint8_t *output, uint64_t size, uint8_t block_size, bool ci) +static int adu_read(struct adu *adu, uint64_t start_addr, uint8_t *output, + uint64_t size, uint8_t block_size, bool ci) { - struct adu *adu; uint8_t *output0; int rc = 0; uint64_t addr0, addr; - assert(!strcmp(adu_target->class, "adu")); - adu = target_to_adu(adu_target); - output0 = output; /* Align start address to block_sized boundary */ @@ -164,41 +160,55 @@ static int __adu_getmem_blocksize(struct pdbg_target *adu_target, uint64_t start int adu_getmem(struct pdbg_target *adu_target, uint64_t start_addr, uint8_t *output, uint64_t size) { - return __adu_getmem_blocksize(adu_target, start_addr, output, - size, 8, false); + struct adu *adu; + + assert(!strcmp(adu_target->class, "adu")); + adu = target_to_adu(adu_target); + + return adu_read(adu, start_addr, output, size, 8, false); } int adu_getmem_ci(struct pdbg_target *adu_target, uint64_t start_addr, uint8_t *output, uint64_t size) { - return __adu_getmem_blocksize(adu_target, start_addr, output, - size, 8, true); + struct adu *adu; + + assert(!strcmp(adu_target->class, "adu")); + adu = target_to_adu(adu_target); + + return adu_read(adu, start_addr, output, size, 8, true); } int adu_getmem_io(struct pdbg_target *adu_target, uint64_t start_addr, uint8_t *output, uint64_t size, uint8_t blocksize) { + struct adu *adu; + + assert(!strcmp(adu_target->class, "adu")); + adu = target_to_adu(adu_target); + /* There is no equivalent for cachable memory as blocksize * does not apply to cachable reads */ - return __adu_getmem_blocksize(adu_target, start_addr, output, - size, blocksize, true); + return adu_read(adu, start_addr, output, size, blocksize, true); } int __adu_getmem(struct pdbg_target *adu_target, uint64_t start_addr, uint8_t *output, uint64_t size, bool ci) { - return __adu_getmem_blocksize(adu_target, start_addr, output, - size, 8, ci); + struct adu *adu; + + assert(!strcmp(adu_target->class, "adu")); + adu = target_to_adu(adu_target); + + return adu_read(adu, start_addr, output, size, 8, ci); } -static int __adu_putmem_blocksize(struct pdbg_target *adu_target, uint64_t start_addr, - uint8_t *input, uint64_t size, uint8_t block_size, bool ci) + +static int adu_write(struct adu *adu, uint64_t start_addr, uint8_t *input, + uint64_t size, uint8_t block_size, bool ci) { - struct adu *adu; int rc = 0, tsize; uint64_t addr, data, end_addr; - assert(!strcmp(adu_target->class, "adu")); - adu = target_to_adu(adu_target); end_addr = start_addr + size; for (addr = start_addr; addr < end_addr; addr += tsize, input += tsize) { if ((addr % block_size) || (addr + block_size > end_addr)) { @@ -231,25 +241,45 @@ static int __adu_putmem_blocksize(struct pdbg_target *adu_target, uint64_t start int adu_putmem(struct pdbg_target *adu_target, uint64_t start_addr, uint8_t *input, uint64_t size) { - return __adu_putmem_blocksize(adu_target, start_addr, input, size, 8, false); + struct adu *adu; + + assert(!strcmp(adu_target->class, "adu")); + adu = target_to_adu(adu_target); + + return adu_write(adu, start_addr, input, size, 8, false); } int adu_putmem_ci(struct pdbg_target *adu_target, uint64_t start_addr, uint8_t *input, uint64_t size) { - return __adu_putmem_blocksize(adu_target, start_addr, input, size, 8, true); + struct adu *adu; + + assert(!strcmp(adu_target->class, "adu")); + adu = target_to_adu(adu_target); + + return adu_write(adu, start_addr, input, size, 8, true); } int adu_putmem_io(struct pdbg_target *adu_target, uint64_t start_addr, uint8_t *input, uint64_t size, uint8_t block_size) { - return __adu_putmem_blocksize(adu_target, start_addr, input, size, block_size, true); + struct adu *adu; + + assert(!strcmp(adu_target->class, "adu")); + adu = target_to_adu(adu_target); + + return adu_write(adu, start_addr, input, size, block_size, true); } int __adu_putmem(struct pdbg_target *adu_target, uint64_t start_addr, uint8_t *input, uint64_t size, bool ci) { - return __adu_putmem_blocksize(adu_target, start_addr, input, size, 8, ci); + struct adu *adu; + + assert(!strcmp(adu_target->class, "adu")); + adu = target_to_adu(adu_target); + + return adu_write(adu, start_addr, input, size, 8, ci); } static int adu_lock(struct adu *adu) From patchwork Mon Jan 7 04:30:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amitay Isaacs X-Patchwork-Id: 1021170 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 43Y2WS07xdz9sDn for ; Mon, 7 Jan 2019 15:30:44 +1100 (AEDT) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=ozlabs.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="W9r37w+l"; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 43Y2WR4yQgzDq7j for ; Mon, 7 Jan 2019 15:30:43 +1100 (AEDT) X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Received: from ozlabs.org (bilbo.ozlabs.org [203.11.71.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 43Y2W90MfdzDqDs for ; Mon, 7 Jan 2019 15:30:29 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dmarc=none (p=none dis=none) header.from=ozlabs.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="W9r37w+l"; dkim-atps=neutral Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPSA id 43Y2W85S6vz9sDB; Mon, 7 Jan 2019 15:30:28 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ozlabs.org; s=201707; t=1546835428; bh=Sqlf+sMSUGlrhuZJkCX2BQ1KaEWLh26CLwf9yTJqtVY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=W9r37w+lxLXxa6aKq3V3VjY4Cev/JzhuRwxl/lmK5vMG0EkEPnWfKYZKKLmv0YGTy AslK2/oBDDVXxoCoR4II77LOiHT56szXMgvfP9cQLfbry90h25+av3K3Qtsd31urgl mIEhvfBynmWQoMYciVF9RhiKw6jjKCPPfg22/P5VKX3eZjM3Z1tvwVO0FLAx7PXbe6 w96eG4UgXuVVWEKMse+/FOvAspdoaxYy+7UYif+durasiUgkrTs1L6zf5jl7f9tkC2 Qn9x+U1bveHMJL7Gr3+HWzZIUart5fJJSocNFBbRf+3nkL0Mr7thHynpq1u75/PyLK 9DwDccOhbcUkw== From: Amitay Isaacs To: pdbg@lists.ozlabs.org Date: Mon, 7 Jan 2019 15:30:17 +1100 Message-Id: <20190107043020.145107-3-amitay@ozlabs.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190107043020.145107-1-amitay@ozlabs.org> References: <20190107043020.145107-1-amitay@ozlabs.org> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 2/5] adu: Add read/write methods for adu target X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amitay Isaacs Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" Signed-off-by: Amitay Isaacs --- libpdbg/adu.c | 4 ++++ libpdbg/target.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/libpdbg/adu.c b/libpdbg/adu.c index b2e80ee..bc01625 100644 --- a/libpdbg/adu.c +++ b/libpdbg/adu.c @@ -570,6 +570,8 @@ static struct adu p8_adu = { }, .getmem = p8_adu_getmem, .putmem = p8_adu_putmem, + .read = adu_read, + .write = adu_write, }; DECLARE_HW_UNIT(p8_adu); @@ -581,5 +583,7 @@ static struct adu p9_adu = { }, .getmem = p9_adu_getmem, .putmem = p9_adu_putmem, + .read = adu_read, + .write = adu_write, }; DECLARE_HW_UNIT(p9_adu); diff --git a/libpdbg/target.h b/libpdbg/target.h index 16ae304..eb8d564 100644 --- a/libpdbg/target.h +++ b/libpdbg/target.h @@ -109,6 +109,8 @@ struct adu { struct pdbg_target target; int (*getmem)(struct adu *, uint64_t, uint64_t *, int, uint8_t); int (*putmem)(struct adu *, uint64_t, uint64_t, int, int, uint8_t); + int (*read)(struct adu *, uint64_t, uint8_t *, uint64_t, uint8_t, bool); + int (*write)(struct adu *, uint64_t, uint8_t *, uint64_t, uint8_t, bool); }; #define target_to_adu(x) container_of(x, struct adu, target) From patchwork Mon Jan 7 04:30:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amitay Isaacs X-Patchwork-Id: 1021171 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 43Y2WW1ymRz9sDP for ; Mon, 7 Jan 2019 15:30:47 +1100 (AEDT) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=ozlabs.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="GE1KKbh7"; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 43Y2WV6FqjzDqCV for ; Mon, 7 Jan 2019 15:30:46 +1100 (AEDT) X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Received: from ozlabs.org (bilbo.ozlabs.org [IPv6:2401:3900:2:1::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 43Y2W92y7tzDqDx for ; Mon, 7 Jan 2019 15:30:29 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dmarc=none (p=none dis=none) header.from=ozlabs.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="GE1KKbh7"; dkim-atps=neutral Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPSA id 43Y2W900NSz9sDP; Mon, 7 Jan 2019 15:30:28 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ozlabs.org; s=201707; t=1546835429; bh=+PrwxIMgJ4WTIK1U/EOvOEyXMzO4WhIs6cK3URl+mcc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GE1KKbh7YBW62EkXX/xnTqLrkrcPrn7hMD8FA1S/m3AyRxF2smecv/icTzgz2lgdN YOSe0tBWzxCrjR9+fnkbaM395Hus+5dzRXdmDx0PE2mti9Fa91Mul2h2YDjV0MFHjf 1YT2rY3Y8Ot9M8555M065Z8HbhDlMfJ9c0vobtpOU+bqxAwA38atQHPrnLtGs/3ILA EObDPIrHgMICdL6/u4XjrvPR4yPgtsQlTdthj++nRP0SOW3pbUiFDCO+Hy+xBcvNcf nSTcW7jMyv7VQ/kj216KAq7uOT5/GW2n78IS3f5eXwVDB+7FEPTKlKjHEztUcTsCve S2PeF965B0e3g== From: Amitay Isaacs To: pdbg@lists.ozlabs.org Date: Mon, 7 Jan 2019 15:30:18 +1100 Message-Id: <20190107043020.145107-4-amitay@ozlabs.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190107043020.145107-1-amitay@ozlabs.org> References: <20190107043020.145107-1-amitay@ozlabs.org> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 3/5] adu: Set default blocksize for adu X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amitay Isaacs Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" Signed-off-by: Amitay Isaacs --- libpdbg/adu.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libpdbg/adu.c b/libpdbg/adu.c index bc01625..650ec6b 100644 --- a/libpdbg/adu.c +++ b/libpdbg/adu.c @@ -117,6 +117,9 @@ static int adu_read(struct adu *adu, uint64_t start_addr, uint8_t *output, int rc = 0; uint64_t addr0, addr; + if (!block_size) + block_size = 8; + output0 = output; /* Align start address to block_sized boundary */ @@ -209,6 +212,9 @@ static int adu_write(struct adu *adu, uint64_t start_addr, uint8_t *input, int rc = 0, tsize; uint64_t addr, data, end_addr; + if (!block_size) + block_size = 8; + end_addr = start_addr + size; for (addr = start_addr; addr < end_addr; addr += tsize, input += tsize) { if ((addr % block_size) || (addr + block_size > end_addr)) { From patchwork Mon Jan 7 04:30:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amitay Isaacs X-Patchwork-Id: 1021169 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 43Y2WM4Jk8z9sDP for ; Mon, 7 Jan 2019 15:30:39 +1100 (AEDT) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=ozlabs.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="wA4QRD77"; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 43Y2WL60rSzDqDp for ; Mon, 7 Jan 2019 15:30:38 +1100 (AEDT) X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Received: from ozlabs.org (bilbo.ozlabs.org [IPv6:2401:3900:2:1::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 43Y2W93ZPXzDqDy for ; Mon, 7 Jan 2019 15:30:29 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dmarc=none (p=none dis=none) header.from=ozlabs.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="wA4QRD77"; dkim-atps=neutral Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPSA id 43Y2W91HH8z9sDn; Mon, 7 Jan 2019 15:30:29 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ozlabs.org; s=201707; t=1546835429; bh=KqucV+XKI28/BQcsEdAO0MQLPiv18hvyOk983AJbfrE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wA4QRD77b+yeVWyY/FfQ4k8MePbSzDV+eTm0QAigwaQL2vhJYUaHP17mVlqhBo5Dp rjgv564ZALC9JqrC6xDrxbrLzHOVqlmcvfPpvA3+2uG/asvRrXFPqn4myBEBww/QF3 /jp2w9vnqhXaX2RR0mkJDDFU21BpDcqyLoGp7TVI/IQ/SoFlrD6kZpJsR6k6z3ELSY Ad71yPGZ8ERhZKXuiWcqNX3+VoF3Cn7K+Olghkv4Wx2nJ5WI/iqv33ZQbqY5bo2R2V fSt+4rU51mR2B+L9UlZ5RS6zLfEhmL0opQ+MKBiGTB0lhjcPaY8XV5UASj+Rit8otT W7B3v6ciMJXVA== From: Amitay Isaacs To: pdbg@lists.ozlabs.org Date: Mon, 7 Jan 2019 15:30:19 +1100 Message-Id: <20190107043020.145107-5-amitay@ozlabs.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190107043020.145107-1-amitay@ozlabs.org> References: <20190107043020.145107-1-amitay@ozlabs.org> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 4/5] adu: Add new api for memory read/write X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amitay Isaacs Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" Signed-off-by: Amitay Isaacs --- libpdbg/libpdbg.h | 3 +++ libpdbg/target.c | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/libpdbg/libpdbg.h b/libpdbg/libpdbg.h index ee8437f..b332a7e 100644 --- a/libpdbg/libpdbg.h +++ b/libpdbg/libpdbg.h @@ -221,6 +221,9 @@ int __adu_getmem(struct pdbg_target *target, uint64_t addr, uint8_t *ouput, int __adu_putmem(struct pdbg_target *target, uint64_t addr, uint8_t *input, uint64_t size, bool ci); +int mem_read(struct pdbg_target *target, uint64_t addr, uint8_t *output, uint64_t size, uint8_t block_size, bool ci); +int mem_write(struct pdbg_target *target, uint64_t addr, uint8_t *input, uint64_t size, uint8_t block_size, bool ci); + int opb_read(struct pdbg_target *target, uint32_t addr, uint32_t *data); int opb_write(struct pdbg_target *target, uint32_t addr, uint32_t data); diff --git a/libpdbg/target.c b/libpdbg/target.c index af9199d..e678470 100644 --- a/libpdbg/target.c +++ b/libpdbg/target.c @@ -216,6 +216,26 @@ int fsi_write(struct pdbg_target *fsi_dt, uint32_t addr, uint32_t data) return fsi->write(fsi, addr64, data); } +int mem_read(struct pdbg_target *target, uint64_t addr, uint8_t *output, uint64_t size, uint8_t block_size, bool ci) +{ + struct adu *adu; + + assert(pdbg_target_is_class(target, "adu")); + adu = target_to_adu(target); + + return adu->read(adu, addr, output, size, block_size, ci); +} + +int mem_write(struct pdbg_target *target, uint64_t addr, uint8_t *input, uint64_t size, uint8_t block_size, bool ci) +{ + struct adu *adu; + + assert(pdbg_target_is_class(target, "adu")); + adu = target_to_adu(target); + + return adu->write(adu, addr, input, size, block_size, ci); +} + struct pdbg_target *require_target_parent(struct pdbg_target *target) { assert(target->parent); From patchwork Mon Jan 7 04:30:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amitay Isaacs X-Patchwork-Id: 1021173 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 43Y2Wd1bGsz9sDP for ; Mon, 7 Jan 2019 15:30:53 +1100 (AEDT) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=ozlabs.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="VCEb3fCl"; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 43Y2Wd0C32zDqF7 for ; Mon, 7 Jan 2019 15:30:53 +1100 (AEDT) X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Received: from ozlabs.org (bilbo.ozlabs.org [IPv6:2401:3900:2:1::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 43Y2WB1jC8zDqF1 for ; Mon, 7 Jan 2019 15:30:30 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dmarc=none (p=none dis=none) header.from=ozlabs.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="VCEb3fCl"; dkim-atps=neutral Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPSA id 43Y2W93BKCz9sDr; Mon, 7 Jan 2019 15:30:29 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ozlabs.org; s=201707; t=1546835429; bh=UZtPmyuimZN29DxhNB9iTWAhWauKnX7Q7qt3HtM+n8s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VCEb3fCluUALEcYMiHMJVT3dBauNAIIY38eD5k8PnsZL6Tpw2vHQW5+PigXUXXglR 2aCtbccAnaxdw6ACvERvxq++dvw2rWat50uCns7JPX20hZgdUJ4L4zN8BjBXQT/wA7 VjovtC8Fj3mMf9L3L3m3rK/VE13g3/gAGA3oEVcsZ5r3mbUzoJYAvmxcr6nyxz9CUG 1jogih7ELVgXy6BzaW5F6RS5XEryGxFQC0+MJnHUSmmBGeIOSi063HFQIuVSZDq8uM Gq3b3Ves5M8zQs25Ay+Bd4BleHOMBgmxrFyHASB1gjqXG+Uzsau1cJ1mWW6s6pG0DU Vr9sMDuolV5KA== From: Amitay Isaacs To: pdbg@lists.ozlabs.org Date: Mon, 7 Jan 2019 15:30:20 +1100 Message-Id: <20190107043020.145107-6-amitay@ozlabs.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190107043020.145107-1-amitay@ozlabs.org> References: <20190107043020.145107-1-amitay@ozlabs.org> MIME-Version: 1.0 Subject: [Pdbg] [PATCH 5/5] main: Use new api to read/write memory X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amitay Isaacs Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" Signed-off-by: Amitay Isaacs --- src/mem.c | 28 ++++++++++------------------ src/pdbgproxy.c | 6 +++--- src/thread.c | 2 +- 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/src/mem.c b/src/mem.c index 6454739..408ff11 100644 --- a/src/mem.c +++ b/src/mem.c @@ -41,7 +41,7 @@ struct mem_flags { #define MEM_CI_FLAG ("--ci", ci, parse_flag_noarg, false) #define BLOCK_SIZE (parse_number8_pow2, NULL) -static int _getmem(uint64_t addr, uint64_t size, uint8_t block_size) +static int _getmem(uint64_t addr, uint64_t size, uint8_t block_size, bool ci) { struct pdbg_target *target; uint8_t *buf; @@ -60,11 +60,7 @@ static int _getmem(uint64_t addr, uint64_t size, uint8_t block_size) pdbg_set_progress_tick(progress_tick); progress_init(); - if (block_size) - rc = adu_getmem_io(target, addr, buf, size, block_size); - else - rc = adu_getmem(target, addr, buf, size); - + rc = mem_read(target, addr, buf, size, block_size, ci); if (rc) PR_ERROR("Unable to read memory.\n"); @@ -84,20 +80,20 @@ static int _getmem(uint64_t addr, uint64_t size, uint8_t block_size) static int getmem(uint64_t addr, uint64_t size, struct mem_flags flags) { if (flags.ci) - return _getmem(addr, size, 8); + return _getmem(addr, size, 8, true); else - return _getmem(addr, size, 0); + return _getmem(addr, size, 0, false); } OPTCMD_DEFINE_CMD_WITH_FLAGS(getmem, getmem, (ADDRESS, DATA), mem_flags, (MEM_CI_FLAG)); static int getmemio(uint64_t addr, uint64_t size, uint8_t block_size) { - return _getmem(addr, size, block_size); + return _getmem(addr, size, block_size, true); } OPTCMD_DEFINE_CMD_WITH_ARGS(getmemio, getmemio, (ADDRESS, DATA, BLOCK_SIZE)); -static int _putmem(uint64_t addr, uint8_t block_size) +static int _putmem(uint64_t addr, uint8_t block_size, bool ci) { uint8_t *buf; int read_size, rc = 0; @@ -118,11 +114,7 @@ static int _putmem(uint64_t addr, uint8_t block_size) if (read_size <= 0) break; - if (block_size) - rc = adu_putmem_io(adu_target, addr, buf, read_size, block_size); - else - rc = adu_putmem(adu_target, addr, buf, read_size); - + rc = mem_write(adu_target, addr, buf, read_size, block_size, ci); if (rc) { rc = 0; printf("Unable to write memory.\n"); @@ -141,14 +133,14 @@ static int _putmem(uint64_t addr, uint8_t block_size) static int putmem(uint64_t addr, struct mem_flags flags) { if (flags.ci) - return _putmem(addr, 8); + return _putmem(addr, 8, true); else - return _putmem(addr, 0); + return _putmem(addr, 0, false); } OPTCMD_DEFINE_CMD_WITH_FLAGS(putmem, putmem, (ADDRESS), mem_flags, (MEM_CI_FLAG)); static int putmemio(uint64_t addr, uint8_t block_size) { - return _putmem(addr, block_size); + return _putmem(addr, block_size, true); } OPTCMD_DEFINE_CMD_WITH_ARGS(putmemio, putmemio, (ADDRESS, BLOCK_SIZE)); diff --git a/src/pdbgproxy.c b/src/pdbgproxy.c index dedea7a..572af01 100644 --- a/src/pdbgproxy.c +++ b/src/pdbgproxy.c @@ -183,7 +183,7 @@ static void get_spr(uint64_t *stack, void *priv) #define MAX_DATA 0x1000 -/* Returns a real address to use with adu_getmem or -1UL if we +/* Returns a real address to use with mem_read or -1UL if we * couldn't determine a real address. At the moment we only deal with * kernel linear mapping but in future we could walk that page * tables. */ @@ -223,7 +223,7 @@ static void get_mem(uint64_t *stack, void *priv) linear_map = get_real_addr(addr); if (linear_map != -1UL) { - if (adu_getmem(adu_target, linear_map, (uint8_t *) data, len)) { + if (mem_read(adu_target, linear_map, (uint8_t *) data, len, 0, false)) { PR_ERROR("Unable to read memory\n"); err = 1; } @@ -293,7 +293,7 @@ static void put_mem(uint64_t *stack, void *priv) PR_INFO("put_mem 0x%016" PRIx64 " = 0x%016" PRIx64 "\n", addr, stack[2]); - if (adu_putmem(adu_target, addr, data, len)) { + if (mem_write(adu_target, addr, data, len, 0, false)) { PR_ERROR("Unable to write memory\n"); err = 3; } diff --git a/src/thread.c b/src/thread.c index 1fd448d..8f34233 100644 --- a/src/thread.c +++ b/src/thread.c @@ -35,7 +35,7 @@ static bool is_real_address(struct thread_regs *regs, uint64_t addr) static int load8(struct pdbg_target *target, uint64_t addr, uint64_t *value) { - if (adu_getmem(target, addr, (uint8_t *)value, 8)) { + if (mem_read(target, addr, (uint8_t *)value, 8, 0, false)) { pdbg_log(PDBG_ERROR, "Unable to read memory address=%016" PRIx64 ".\n", addr); return 0; }