On Tue, 7 Feb 2023 08:47:58 -0700 Dave Jiang <dave.jiang@xxxxxxxxx> wrote: > On 2/7/23 7:19 AM, Rafael J. Wysocki wrote: > > On Mon, Feb 6, 2023 at 9:49 PM Dave Jiang <dave.jiang@xxxxxxxxx> wrote: > >> > >> Export the CDAT checksum verify function so CXL driver can use it to verify > >> CDAT coming from the CXL devices. > >> > >> Given that this function isn't actually being used by ACPI internals, > >> removing the define check of APCI_CHECKSUM_ABORT so the function would > >> return failure on checksum fail since the driver will need to know. Seems unlikely this won't cause problems in usage of AcpiUtVerifyCdatChecksum in the upstream ACPICA code. So you may need to leave that alone. You will probably want a linux wrapper to export rather than the acpica function. That should let you avoid an acpica change I think. There are no exports from within acpica code. Jonathan > > > > If you want to make ACPICA changes, please first submit a pull request > > to the upstream ACPICA project on GitHub. > > > > Having done that, please resubmit the corresponding Linux patch with a > > Link tag pointing to the upstream PR. > > Ok will do. Thanks! > > > > Thanks! > > > >> Signed-off-by: Dave Jiang <dave.jiang@xxxxxxxxx> > >> --- > >> drivers/acpi/acpica/utcksum.c | 4 +--- > >> include/linux/acpi.h | 7 +++++++ > >> 2 files changed, 8 insertions(+), 3 deletions(-) > >> > >> diff --git a/drivers/acpi/acpica/utcksum.c b/drivers/acpi/acpica/utcksum.c > >> index c166e4c05ab6..c0f98c8f9a0b 100644 > >> --- a/drivers/acpi/acpica/utcksum.c > >> +++ b/drivers/acpi/acpica/utcksum.c > >> @@ -102,15 +102,13 @@ acpi_ut_verify_cdat_checksum(struct acpi_table_cdat *cdat_table, u32 length) > >> "should be 0x%2.2X", > >> acpi_gbl_CDAT, cdat_table->checksum, > >> checksum)); > >> - > >> -#if (ACPI_CHECKSUM_ABORT) > >> return (AE_BAD_CHECKSUM); > >> -#endif > >> } > >> > >> cdat_table->checksum = checksum; > >> return (AE_OK); > >> } > >> +EXPORT_SYMBOL_GPL(acpi_ut_verify_cdat_checksum); > >> > >> /******************************************************************************* > >> * > >> diff --git a/include/linux/acpi.h b/include/linux/acpi.h > >> index 5e6a876e17ba..09b44afef7df 100644 > >> --- a/include/linux/acpi.h > >> +++ b/include/linux/acpi.h > >> @@ -1504,9 +1504,16 @@ static inline void acpi_init_ffh(void) { } > >> #ifdef CONFIG_ACPI > >> extern void acpi_device_notify(struct device *dev); > >> extern void acpi_device_notify_remove(struct device *dev); > >> +extern acpi_status > >> +acpi_ut_verify_cdat_checksum(struct acpi_table_cdat *cdat_table, u32 length); > >> #else > >> static inline void acpi_device_notify(struct device *dev) { } > >> static inline void acpi_device_notify_remove(struct device *dev) { } > >> +static inline acpi_status > >> +acpi_ut_verify_cdat_checksum(struct acpi_table_cdat *cdat_table, u32 length) > >> +{ > >> + return (AE_NOT_CONFIGURED); > >> +} > >> #endif > >> > >> #endif /*_LINUX_ACPI_H*/ > >> > >>