On Feb 2, 2016 5:37 AM, "Corey Minyard" <miny...@acm.org> wrote: > > On 02/01/2016 03:25 AM, Jean Delvare wrote: >> >> Hi Corey, >> >> I won't comment on the IPMI side of this as this isn't my area. However >> I have a comment on the DMI part: >> >> Le Friday 29 January 2016 à 16:43 -0600, miny...@acm.org a écrit : >>> >>> From: Corey Minyard <cminy...@mvista.com> >>> >>> This is so that an IPMI platform device can be created from a >>> DMI firmware entry. >>> >>> Signed-off-by: Corey Minyard <cminy...@mvista.com> >>> Cc: Jean Delvare <jdelv...@suse.de> >>> Cc: Andy Lutomirski <l...@kernel.org> >>> --- >>> drivers/firmware/dmi_scan.c | 34 ++++++++++++++++++++++++---------- >>> include/linux/dmi.h | 24 ++++++++++++++++++++++++ >>> include/linux/fwnode.h | 1 + >>> 3 files changed, 49 insertions(+), 10 deletions(-) >>> >>> diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c >>> index da471b2..13d9bca 100644 >>> --- a/drivers/firmware/dmi_scan.c >>> +++ b/drivers/firmware/dmi_scan.c >>> @@ -41,6 +41,16 @@ static struct dmi_memdev_info { >>> } *dmi_memdev; >>> static int dmi_memdev_nr; >>> +static void *dmi_zalloc(unsigned len) >>> +{ >>> + void *ret = dmi_alloc(len); >>> + >>> + if (ret) >>> + memset(ret, 0, len); >>> + >>> + return ret; >>> +} >>> + >>> static const char * __init dmi_string_nosave(const struct dmi_header *dm, >>> u8 s) >>> { >>> const u8 *bp = ((u8 *) dm) + dm->length; >>> @@ -242,6 +252,12 @@ static void __init dmi_save_type(const struct >>> dmi_header *dm, int slot, >>> (...) >>> @@ -250,15 +266,14 @@ static void __init dmi_save_one_device(int type, >>> const char *name) >>> if (dmi_find_device(type, name, NULL)) >>> return; >>> - dev = dmi_alloc(sizeof(*dev) + strlen(name) + 1); >>> + dev = dmi_zalloc(sizeof(*dev) + strlen(name) + 1); >>> if (!dev) >>> return; >>> dev->type = type; >>> strcpy((char *)(dev + 1), name); >>> dev->name = (char *)(dev + 1); >>> - dev->device_data = NULL; >> >> This change seems rather unrelated, and I'm not sure what purpose it >> serves. On ia64 and arm64 it is clearly redundant as dmi_alloc calls >> kzalloc directly. On x86_64, extend_brk is called instead (don't ask me >> why, I have no clue) but looking at the code I see that it does >> memset(ret, 0, size) as well so memory is also zeroed there. Which makes >> dmi_alloc the same as dmi_zalloc on all 3 architectures. >> >> So please revert this change. This will make your patch easier to >> review, too. >> > Ok. I had assumed extend_break wasn't zeroing since there were all the NULL > assignments, > I should have looked. > > I was thinking about this, and the fwnode could just be added to the IPMI > device. I'm not > sure if you would prefer that over adding it to dmi_device. The fwnode is in > acpi_device, > and I was modelling these changes after that, but maybe that's not required > here.
I think dmi_device is right, especially if your patches result in a firmware_node sysfs link being created. That way the link will point to the right place. --Andy