|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1 05/17] xen/riscv: implement virtual APLIC MMIO emulation
On 8/12/26 11:47 AM, Baptiste Le Duc wrote: On 2026-08-11 18:24 +0200, Oleksii Kurochko wrote:On 8/11/26 5:29 PM, Baptiste Le Duc wrote:On 2026-08-11 16:36 +0200, Oleksii Kurochko wrote:On 8/11/26 11:21 AM, Baptiste Le Duc wrote:On 2026-08-07 18:08:21+02:00, Oleksii Kurochko wrote:On 8/6/26 4:28 PM, Jan Beulich wrote:On 20.07.2026 18:02, Oleksii Kurochko wrote: For this tag to have any meaning, it should move ahead of the --- above; the explanations ... ... here rather explain the restriction on the R-b, not its odd placement. As this looks to be recurring - please get versioning of your series right. The series is supposedly v1, but here you give the impression of it being v3. If there really was an earlier v2 posting, why isn't the entire series here v3?It is v3 before before it was a part of another patch series connected to dom0less config enablement. Would it be better to just write in "Change in v3" that it is moved from another patch series + link to that patch series? Or it will be enough just to drop "Changes in v2 and v1" and just start from v1?PLease can you, before submitting, self-review your patches? I'm really getting tired of having to repeatedly point out basic style issues, like the overlong line here.Sorry for that, I will write an extra checker for such cases to not miss them.It extends to the other local variables here, but I'll use these two to try to make my point: I'm struggling to associate the names with the values they are set to. Likely "hxw" is an abbreviation of hart index width, but (a) what's the leading 'l' then and (b) why is there no 'g' in "hhxw"? By using hard to grasp names, you make it hard to actually understand the subsequent expressions, in particular ...The names it taken directly from AIA spec: The use of this value and fields HHXS (High Hart Index Shift), LHXS (Low Hart Index Shift), HHXW (High Hart Index Width), and LHXW (Low Hart Index Width) for determining target addresses for MSIs is described later, in Section 4.9.1. The AIA specification interprets the machine-level hart index as a combination of the **group index** (`g`) and the **hart index within the group** (`h`), according to the following formulas: ``` (1) g = (machine-level hart index >> LHXW) & (2^HHXW − 1) (2) h = machine-level hart index & (2^LHXW − 1) ``` (In our case, the machine-level hart index is equal to `mhartid`, i.e. the hart index.)Therefore, if I understand correclty, if we take the Hart Index as defined in the AIA spec, we should have: Hart Index = (g << LHXW) | h Is it correct? Not really, this diagram was created from scratch. I think you are referring to that one in struct imsic_config but the idea is the same and the comment in struct imsic_config should be fixed too. I will re-use what we agreed here. https://lore.kernel.org/all/20240307140307.646078-3-apatel@xxxxxxxxxxxxxxxx/), where "HART Index" is simply the name of the riscv,hart-index-bits DT property. Linux's own APLIC driver then reuses a single hart_index variable for h and for (g << LHXW) | h in consecutive lines, without a comment, which is confusing - if I understand correctly, obviously :) I think this diagram could be better aligned with the AIA spec: * XLEN-1 HHXS+24 LHXS+12 12 0 * | | | | | * ------------------------------------------------------------ * |xxxx| g |xxxxxxxx| h |xxxx|Guest Index| 0 | * ------------------------------------------------------------ * * - g: group number * - h: hart number relative to the group * - xxxx: remaining Base PPN bits; each gap may be zero-width. What do you think? It would allow us to keep a single meaning for the `Hart Index` field, the same one as target[i] bits 31:18 i.e. (g << LHXW) | h. I agree g and h better describes AIA spec and probably will be easier to do a grep in AIA spec. Thanks. ~ Oleksii
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |