Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

soc: apple: rtkit: Check & log more failures

Check and log the following failures:

* regular messages
* management messages
* failed buffer requests

This helps debugging.

Signed-off-by: Asahi Lina <lina@asahilina.net>
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Link: https://lore.kernel.org/r/20250211-rtkit-more-logging-v1-1-93334e9c1c77@rosenzweig.io
Signed-off-by: Sven Peter <sven@svenpeter.dev>

authored by

Asahi Lina and committed by
Sven Peter
ca0272d8 2014c95a

+34 -10
+34 -10
drivers/soc/apple/rtkit.c
··· 97 97 } 98 98 EXPORT_SYMBOL_GPL(apple_rtkit_is_crashed); 99 99 100 - static void apple_rtkit_management_send(struct apple_rtkit *rtk, u8 type, 100 + static int apple_rtkit_management_send(struct apple_rtkit *rtk, u8 type, 101 101 u64 msg) 102 102 { 103 + int ret; 104 + 103 105 msg &= ~APPLE_RTKIT_MGMT_TYPE; 104 106 msg |= FIELD_PREP(APPLE_RTKIT_MGMT_TYPE, type); 105 - apple_rtkit_send_message(rtk, APPLE_RTKIT_EP_MGMT, msg, NULL, false); 107 + ret = apple_rtkit_send_message(rtk, APPLE_RTKIT_EP_MGMT, msg, NULL, false); 108 + 109 + if (ret) 110 + dev_err(rtk->dev, "RTKit: Failed to send management message: %d\n", ret); 111 + 112 + return ret; 106 113 } 107 114 108 115 static void apple_rtkit_management_rx_hello(struct apple_rtkit *rtk, u64 msg) ··· 302 295 return 0; 303 296 304 297 error: 298 + dev_err(rtk->dev, "RTKit: failed buffer request for 0x%zx bytes (%d)\n", 299 + buffer->size, err); 300 + 305 301 buffer->buffer = NULL; 306 302 buffer->iomem = NULL; 307 303 buffer->iova = 0; ··· 598 588 .msg1 = ep, 599 589 }; 600 590 601 - if (rtk->crashed) 591 + if (rtk->crashed) { 592 + dev_warn(rtk->dev, 593 + "RTKit: Device is crashed, cannot send message\n"); 602 594 return -EINVAL; 595 + } 596 + 603 597 if (ep >= APPLE_RTKIT_APP_ENDPOINT_START && 604 - !apple_rtkit_is_running(rtk)) 598 + !apple_rtkit_is_running(rtk)) { 599 + dev_warn(rtk->dev, 600 + "RTKit: Endpoint 0x%02x is not running, cannot send message\n", ep); 605 601 return -EINVAL; 602 + } 606 603 607 604 /* 608 605 * The message will be sent with a MMIO write. We need the barrier ··· 759 742 reinit_completion(&rtk->ap_pwr_ack_completion); 760 743 761 744 msg = FIELD_PREP(APPLE_RTKIT_MGMT_PWR_STATE, state); 762 - apple_rtkit_management_send(rtk, APPLE_RTKIT_MGMT_SET_AP_PWR_STATE, 763 - msg); 745 + ret = apple_rtkit_management_send(rtk, APPLE_RTKIT_MGMT_SET_AP_PWR_STATE, 746 + msg); 747 + if (ret) 748 + return ret; 764 749 765 750 ret = apple_rtkit_wait_for_completion(&rtk->ap_pwr_ack_completion); 766 751 if (ret) ··· 782 763 reinit_completion(&rtk->iop_pwr_ack_completion); 783 764 784 765 msg = FIELD_PREP(APPLE_RTKIT_MGMT_PWR_STATE, state); 785 - apple_rtkit_management_send(rtk, APPLE_RTKIT_MGMT_SET_IOP_PWR_STATE, 786 - msg); 766 + ret = apple_rtkit_management_send(rtk, APPLE_RTKIT_MGMT_SET_IOP_PWR_STATE, 767 + msg); 768 + if (ret) 769 + return ret; 787 770 788 771 ret = apple_rtkit_wait_for_completion(&rtk->iop_pwr_ack_completion); 789 772 if (ret) ··· 886 865 int apple_rtkit_wake(struct apple_rtkit *rtk) 887 866 { 888 867 u64 msg; 868 + int ret; 889 869 890 870 if (apple_rtkit_is_running(rtk)) 891 871 return -EINVAL; ··· 898 876 * will wait for the completion anyway. 899 877 */ 900 878 msg = FIELD_PREP(APPLE_RTKIT_MGMT_PWR_STATE, APPLE_RTKIT_PWR_STATE_ON); 901 - apple_rtkit_management_send(rtk, APPLE_RTKIT_MGMT_SET_IOP_PWR_STATE, 902 - msg); 879 + ret = apple_rtkit_management_send(rtk, APPLE_RTKIT_MGMT_SET_IOP_PWR_STATE, 880 + msg); 881 + if (ret) 882 + return ret; 903 883 904 884 return apple_rtkit_boot(rtk); 905 885 }