Messages in this thread |  | | Date | Wed, 5 Aug 2026 09:52:45 -0400 | | From | Yazen Ghannam <> | | Subject | Re: [PATCH v9 2/7] RAS/AMD/ATL: Refactor PRM address translation into a common helper |
| |
On Tue, Aug 04, 2026 at 10:19:17PM -0700, Borislav Petkov wrote: > On Thu, Jul 30, 2026 at 03:48:29PM -0400, Yazen Ghannam wrote: > > Every PRM address translation follows the same pattern. Each fills a > > parameter buffer, invokes the handler, and checks the result. Only the > > handler GUID and the output buffer differ. > > > > Factor the common sequence into prm_umc_norm_to_addr(). > > And here your commit message ends. The rest is describing the diff. >
Okay.
> > -unsigned long prm_umc_norm_to_sys_addr(u8 socket_id, u64 bank_id, unsigned long addr) > > +int prm_umc_norm_to_addr(guid_t guid, u8 socket_id, u64 bank_id, > > + unsigned long addr, void *out_buf) > > So if you're going to have a param buffer structure, you might as well use it: > > diff --git a/drivers/ras/amd/atl/prm.c b/drivers/ras/amd/atl/prm.c > index 3d5a6f5ae0a9..726464f31e10 100644 > --- a/drivers/ras/amd/atl/prm.c > +++ b/drivers/ras/amd/atl/prm.c > @@ -26,18 +26,11 @@ struct param_buf { > void *out_buf; > } __packed; > > -int prm_umc_norm_to_addr(guid_t guid, u8 socket_id, u64 bank_id, > - unsigned long addr, void *out_buf) > +static int __prm_umc_norm_to_addr(guid_t guid, struct param_buf *p) > { > - struct param_buf p_buf; > int ret; > > - p_buf.norm_addr = addr; > - p_buf.socket = socket_id; > - p_buf.bank_id = bank_id; > - p_buf.out_buf = out_buf; > - > - ret = acpi_call_prm_handler(guid, &p_buf); > + ret = acpi_call_prm_handler(guid, p); > if (!ret) > return 0; > > @@ -52,9 +45,15 @@ int prm_umc_norm_to_addr(guid_t guid, u8 socket_id, u64 bank_id, > unsigned long prm_umc_norm_to_sys_addr(u8 socket_id, u64 bank_id, unsigned long addr) > { > unsigned long sys_addr; > + struct param_buf p_buf = { > + .norm_addr = addr, > + .socket = socket_id, > + .bank_id = bank_id, > + .out_buf = &sys_addr, > + }; > int ret; > > - ret = prm_umc_norm_to_addr(norm_to_sys_guid, socket_id, bank_id, addr, &sys_addr); > + ret = __prm_umc_norm_to_addr(norm_to_sys_guid, &p_buf); > if (ret) > return ret; > > --
Right, it gets mostly there in the later patches: int prm_umc_norm_to_addr(guid_t guid, struct atl_umc_addr *addr, void *out_buf);
I'll do another revision with your proposal.
Thanks, Yazen
|  |