|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1 12/15] xen/riscv: introduce sbi_set_timer()
On 1/12/26 4:12 PM, Jan Beulich wrote: On 24.12.2025 18:03, Oleksii Kurochko wrote:Introduce pointer to function which points to a specific sbi_set_timer() implementation. It is done in this way as different OpenSBI version can have different Extenion ID and/or funcion ID for TIME extension. sbi_set_time() programs the clock for next event after stime_value time. This function also clears the pending timer interrupt bit. Introduce extension ID and SBI function ID for TIME extension. Implement only sbi_set_timer_v02() as there is not to much sense to support earlier version and, at the moment, Xen supports only v02.Besides this somewhat contradicting the use of a function pointer: What about the legacy extension's equivalent? I think this is not really needed, and the same implementation can be used for both the Legacy and TIME extensions, since the API is identical and the only difference is that|sbi_set_timer()| was moved into a separate extension. Since Xen reports to the guest that it supports SBI v0.2, it is up to the guest implementation to decide why it is still using|sbi_set_timer()| from the Legacy extension instead of the TIME extension. I think that I can add Legacy extension equivalent but considering that we are using OpenSBI v0.2 for which Time extension is available it seems for me it is enough to define sbi_set_timer to sbi_set_timer_v02() for now. --- a/xen/arch/riscv/include/asm/sbi.h +++ b/xen/arch/riscv/include/asm/sbi.h @@ -33,6 +33,7 @@#define SBI_EXT_BASE 0x10#define SBI_EXT_RFENCE 0x52464E43 +#define SBI_EXT_TIME 0x54494D45/* SBI function IDs for BASE extension */#define SBI_EXT_BASE_GET_SPEC_VERSION 0x0 @@ -65,6 +66,9 @@#define SBI_SPEC_VERSION_DEFAULT 0x1 +/* SBI function IDs for TIME extension */+#define SBI_EXT_TIME_SET_TIMER 0x0Move up besides the other SBI_EXT_* and use the same amount of padding? Sure, I will do that.
I update the comment with the following then: The stime_value parameter represents absolute time measured in ticks.
Makes sense, I will update the function in mentioned way. + if ( ret.error ) + return sbi_err_map_xen_errno(ret.error); + else + return 0; +}While I understand this is being debated, I continue to think that this kind of use of if/else isn't very helpful. Function's main return statements imo benefit from being unconditional. Considering what returns sbi_err_map_xen_errno() we can just drop if/else and have only: return sbi_err_map_xen_errno(ret.error); as if ret.error == SBI_SUCCESS(0) then sbi_err_map_xen_errno() will return 0. Thanks. ~ Oleksii
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |