Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751407AbcCHSd3 (ORCPT ); Tue, 8 Mar 2016 13:33:29 -0500 Received: from mga01.intel.com ([192.55.52.88]:16493 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750747AbcCHSdN (ORCPT ); Tue, 8 Mar 2016 13:33:13 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,557,1449561600"; d="scan'208";a="929532325" From: Matt Roper To: intel-gfx@lists.freedesktop.org Cc: Matt Roper , Mauro Carvalho Chehab , Jean Delvare , linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 6/8] dmi: Move memdev_dmi_entry definition to dmi.h (v2) Date: Tue, 8 Mar 2016 10:32:37 -0800 Message-Id: <1457461957-23029-1-git-send-email-matthew.d.roper@intel.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <20160308133713.24e0b71a@endymion> References: <20160308133713.24e0b71a@endymion> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 5401 Lines: 184 A couple of the EDAC drivers have a nice memdev_dmi_entry structure for decoding DMI memory device entries. Move the structure definition to dmi.h so that it can be shared between those drivers and also other parts of the kernel; the i915 graphics driver is going to need to use this structure soon as well. As part of this move we rename the structure s/memdev_dmi_entry/dmi_entry_memdev/ to ensure it has a proper 'dmi' prefix. v2: - Rename structure to dmi_entry_memdev. (Jean) - Use __packed instead of __attribute__((__packed__)) for consistency with the rest of the dmi.h header. (Jean) Cc: Mauro Carvalho Chehab Cc: Jean Delvare Cc: linux-edac@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Matt Roper --- drivers/edac/ghes_edac.c | 28 +-------------------------- drivers/edac/i7core_edac.c | 47 +++++++++++----------------------------------- include/linux/dmi.h | 25 ++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 63 deletions(-) diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index e3fa439..39535bb 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -35,32 +35,6 @@ static DEFINE_MUTEX(ghes_edac_lock); static int ghes_edac_mc_num; -/* Memory Device - Type 17 of SMBIOS spec */ -struct memdev_dmi_entry { - u8 type; - u8 length; - u16 handle; - u16 phys_mem_array_handle; - u16 mem_err_info_handle; - u16 total_width; - u16 data_width; - u16 size; - u8 form_factor; - u8 device_set; - u8 device_locator; - u8 bank_locator; - u8 memory_type; - u16 type_detail; - u16 speed; - u8 manufacturer; - u8 serial_number; - u8 asset_tag; - u8 part_number; - u8 attributes; - u32 extended_size; - u16 conf_mem_clk_speed; -} __attribute__((__packed__)); - struct ghes_edac_dimm_fill { struct mem_ctl_info *mci; unsigned count; @@ -80,7 +54,7 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) struct mem_ctl_info *mci = dimm_fill->mci; if (dh->type == DMI_ENTRY_MEM_DEVICE) { - struct memdev_dmi_entry *entry = (struct memdev_dmi_entry *)dh; + struct dmi_entry_memdev *entry = (struct dmi_entry_memdev *)dh; struct dimm_info *dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers, dimm_fill->count, 0, 0); diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c index 01087a3..fbfb06f 100644 --- a/drivers/edac/i7core_edac.c +++ b/drivers/edac/i7core_edac.c @@ -1906,31 +1906,6 @@ static struct notifier_block i7_mce_dec = { .notifier_call = i7core_mce_check_error, }; -struct memdev_dmi_entry { - u8 type; - u8 length; - u16 handle; - u16 phys_mem_array_handle; - u16 mem_err_info_handle; - u16 total_width; - u16 data_width; - u16 size; - u8 form; - u8 device_set; - u8 device_locator; - u8 bank_locator; - u8 memory_type; - u16 type_detail; - u16 speed; - u8 manufacturer; - u8 serial_number; - u8 asset_tag; - u8 part_number; - u8 attributes; - u32 extended_size; - u16 conf_mem_clk_speed; -} __attribute__((__packed__)); - /* * Decode the DRAM Clock Frequency, be paranoid, make sure that all @@ -1946,28 +1921,28 @@ static void decode_dclk(const struct dmi_header *dh, void *_dclk_freq) return; if (dh->type == DMI_ENTRY_MEM_DEVICE) { - struct memdev_dmi_entry *memdev_dmi_entry = - (struct memdev_dmi_entry *)dh; + struct dmi_entry_memdev *dmi_entry_memdev = + (struct dmi_entry_memdev *)dh; unsigned long conf_mem_clk_speed_offset = - (unsigned long)&memdev_dmi_entry->conf_mem_clk_speed - - (unsigned long)&memdev_dmi_entry->type; + (unsigned long)&dmi_entry_memdev->conf_mem_clk_speed - + (unsigned long)&dmi_entry_memdev->type; unsigned long speed_offset = - (unsigned long)&memdev_dmi_entry->speed - - (unsigned long)&memdev_dmi_entry->type; + (unsigned long)&dmi_entry_memdev->speed - + (unsigned long)&dmi_entry_memdev->type; /* Check that a DIMM is present */ - if (memdev_dmi_entry->size == 0) + if (dmi_entry_memdev->size == 0) return; /* * Pick the configured speed if it's available, otherwise * pick the DIMM speed, or we don't have a speed. */ - if (memdev_dmi_entry->length > conf_mem_clk_speed_offset) { + if (dmi_entry_memdev->length > conf_mem_clk_speed_offset) { dmi_mem_clk_speed = - memdev_dmi_entry->conf_mem_clk_speed; - } else if (memdev_dmi_entry->length > speed_offset) { - dmi_mem_clk_speed = memdev_dmi_entry->speed; + dmi_entry_memdev->conf_mem_clk_speed; + } else if (dmi_entry_memdev->length > speed_offset) { + dmi_mem_clk_speed = dmi_entry_memdev->speed; } else { *dclk_freq = -1; return; diff --git a/include/linux/dmi.h b/include/linux/dmi.h index 5e9c74c..60dcc31 100644 --- a/include/linux/dmi.h +++ b/include/linux/dmi.h @@ -78,6 +78,31 @@ struct dmi_header { u16 handle; } __packed; +struct dmi_entry_memdev { + u8 type; + u8 length; + u16 handle; + u16 phys_mem_array_handle; + u16 mem_err_info_handle; + u16 total_width; + u16 data_width; + u16 size; + u8 form; + u8 device_set; + u8 device_locator; + u8 bank_locator; + u8 memory_type; + u16 type_detail; + u16 speed; + u8 manufacturer; + u8 serial_number; + u8 asset_tag; + u8 part_number; + u8 attributes; + u32 extended_size; + u16 conf_mem_clk_speed; +} __packed; + struct dmi_device { struct list_head list; int type; -- 2.1.4