Re: [RFC PATCH v2] powerpc/papr_scm: Move duplicate definitions to common header files
From: Vaibhav Jain <hidden>
Date: 2021-09-08 10:46:32
Also in:
lkml, nvdimm
Hi Mpe, Thanks for looking into this patch. Michael Ellerman [off-list ref] writes:
Shivaprasad G Bhat [off-list ref] writes:quoted
papr_scm and ndtest share common PDSM payload structs like nd_papr_pdsm_health. Presently these structs are duplicated across papr_pdsm.h and ndtest.h header files. Since 'ndtest' is essentially arch independent and can run on platforms other than PPC64, a way needs to be deviced to avoid redundancy and duplication of PDSM structs in future. So the patch proposes moving the PDSM header from arch/powerpc/include/uapi/ to the generic include/uapi/linux directory. Also, there are some #defines common between papr_scm and ndtest which are not exported to the user space. So, move them to a header file which can be shared across ndtest and papr_scm via newly introduced include/linux/papr_scm.h. Signed-off-by: Shivaprasad G Bhat <redacted> Signed-off-by: Vaibhav Jain <redacted> Suggested-by: "Aneesh Kumar K.V" <redacted> --- Changelog: Since v1: Link: https://patchwork.kernel.org/project/linux-nvdimm/patch/162505488483.72147.12741153746322191381.stgit@56e104a48989/ * Removed dependency on this patch for the other patches MAINTAINERS | 2 arch/powerpc/include/uapi/asm/papr_pdsm.h | 165 ----------------------------- arch/powerpc/platforms/pseries/papr_scm.c | 43 -------- include/linux/papr_scm.h | 48 ++++++++ include/uapi/linux/papr_pdsm.h | 165 +++++++++++++++++++++++++++++This doesn't make sense to me. Anything with papr (or PAPR) in the name is fundamentally powerpc specific, it doesn't belong in a generic header, or in a generic location. What's the actual problem you're trying to solve?
The ndtest module (tools/testing/nvdimm/test/ndtest.c) is implemented in an arch independed way to enable testing of PAPR PDSMs on non ppc64 platforms like x86_64. It uses the same PDSM structs as used by papr_scm to communicate with libndctl userspace. Since papr_scm is ppc64 arch specific we were so far duplicating the PDSM structures between ndtest and papr_scm. The patch tries to solve this duplication by moving the shared structs to arch independent common include dirs. Secondly, PDSMs describes how userspace can use NVDIMM_FAMILY_PAPR to interact with NVDIMMs. So potentially a new NVDIMM beyond powerpc arch can add its support and would need access to the same structs used by papr_scm and ndtest. In that context it would make sense to move PDSM headers to generic include dirs.
If it's just including papr_scm bits into ndtest.c then that should be as simple as: #ifdef __powerpc__ #include <asm/papr_scm.h> #endif Shouldn't it?
No, as ndtest implements support for NVDIMM_FAMILY_PAPR and would need access to PDSM related structs which presently are only available for powerpc.
cheers
-- Cheers ~ Vaibhav