|
@@ -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 @@ undo:
|
|
|
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);
|