Merge "soc: qcom: mem-offline: update return value of aop_send_msg"

This commit is contained in:
qctecmdr
2022-03-15 03:04:04 -07:00
committed by Gerrit - the friendly Code Review server

View File

@@ -223,6 +223,7 @@ static int aop_send_msg(unsigned long addr, bool online)
struct qmp_pkt pkt; struct qmp_pkt pkt;
char mbox_msg[MAX_LEN]; char mbox_msg[MAX_LEN];
unsigned long addr_low, addr_high; unsigned long addr_low, addr_high;
int ret;
addr_low = addr & AOP_MSG_ADDR_MASK; addr_low = addr & AOP_MSG_ADDR_MASK;
addr_high = (addr >> AOP_MSG_ADDR_HIGH_SHIFT) & 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.size = MAX_LEN;
pkt.data = mbox_msg; 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) 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 else
ret = aop_send_msg(__pfn_to_phys(start), online); ret = aop_send_msg(__pfn_to_phys(start), online);
if (ret) { if (ret < 0) {
pr_err("PASR: %s %s request addr:0x%llx failed\n", pr_err("PASR: %s %s request addr:0x%llx failed and return value from AOP is %d\n",
is_rpm_controller ? "RPM" : "AOP", is_rpm_controller ? "RPM" : "AOP",
online ? "online" : "offline", online ? "online" : "offline",
__pfn_to_phys(start)); __pfn_to_phys(start), ret);
goto undo; goto undo;
} }
@@ -314,8 +316,9 @@ undo:
else else
ret = aop_send_msg(__pfn_to_phys(start), !online); ret = aop_send_msg(__pfn_to_phys(start), !online);
if (ret) if (ret < 0)
panic("Failed to completely online/offline a hotpluggable segment. A quasi state of memblock can cause randomn system failures."); 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; segment_size = segment_infos[seg_idx].seg_size;
addr += segment_size; addr += segment_size;
seg_idx = get_segment_addr_to_idx(addr); seg_idx = get_segment_addr_to_idx(addr);