From 3acdc59a3e8e0ed5da3e46fcfc45ecb7515542cb Mon Sep 17 00:00:00 2001 From: Faiyaz Mohammed Date: Tue, 8 Mar 2022 13:32:30 +0530 Subject: [PATCH] soc: qcom: mem-offline: update return value of aop_send_msg Updates return value of aop_send_msg. Print return value from aop_send_msg to figure out exact reason for AOP online request fail. Change-Id: I910fae7f873732edc6e9d6501e16408b64119da9 Signed-off-by: Faiyaz Mohammed --- drivers/soc/qcom/mem-offline.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/soc/qcom/mem-offline.c b/drivers/soc/qcom/mem-offline.c index 52ddb0b7d616..ae7b05222180 100644 --- a/drivers/soc/qcom/mem-offline.c +++ b/drivers/soc/qcom/mem-offline.c @@ -223,6 +223,7 @@ static int aop_send_msg(unsigned long addr, bool online) struct qmp_pkt pkt; char mbox_msg[MAX_LEN]; unsigned long addr_low, addr_high; + int ret; addr_low = addr & AOP_MSG_ADDR_MASK; addr_high = (addr >> AOP_MSG_ADDR_HIGH_SHIFT) & AOP_MSG_ADDR_MASK; @@ -233,7 +234,8 @@ static int aop_send_msg(unsigned long addr, bool online) pkt.size = MAX_LEN; pkt.data = mbox_msg; - return (mbox_send_message(mailbox.mbox, &pkt) < 0); + ret = mbox_send_message(mailbox.mbox, &pkt); + return ret; } static long get_memblk_bits(unsigned int seg_idx, unsigned long memblk_addr) @@ -285,11 +287,11 @@ static int send_msg(struct memory_notify *mn, bool online, int count) else ret = aop_send_msg(__pfn_to_phys(start), online); - if (ret) { - pr_err("PASR: %s %s request addr:0x%llx failed\n", + if (ret < 0) { + pr_err("PASR: %s %s request addr:0x%llx failed and return value from AOP is %d\n", is_rpm_controller ? "RPM" : "AOP", online ? "online" : "offline", - __pfn_to_phys(start)); + __pfn_to_phys(start), ret); goto undo; } @@ -314,8 +316,9 @@ static int send_msg(struct memory_notify *mn, bool online, int count) else ret = aop_send_msg(__pfn_to_phys(start), !online); - if (ret) - panic("Failed to completely online/offline a hotpluggable segment. A quasi state of memblock can cause randomn system failures."); + if (ret < 0) + panic("Failed to completely online/offline a hotpluggable segment. A quasi state of memblock can cause randomn system failures. Return value from AOP is %d", + ret); segment_size = segment_infos[seg_idx].seg_size; addr += segment_size; seg_idx = get_segment_addr_to_idx(addr);