linux-edac.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [v2,6/7] EDAC: add edac_check_mc_owner() to check MC owner
@ 2017-08-03 21:57 Toshi Kani
  0 siblings, 0 replies; 7+ messages in thread
From: Toshi Kani @ 2017-08-03 21:57 UTC (permalink / raw)
  To: rjw, bp
  Cc: mchehab, tony.luck, lenb, linux-acpi, linux-edac, linux-kernel,
	Toshi Kani

Only a single edac driver can be enabled for EDAC MC.  When ghes_edac
is enabled, a regular edac driver for the CPU type / platform still
attempts to register itself and fails in edac_mc_add_mc().

Add edac_check_mc_owner() so that regular edac drivers can check
the owner of EDAC MC at the beginning of initialization.

Also change the owner check to string comparison from address check.

Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Tony Luck <tony.luck@intel.com>
---
 drivers/edac/edac_mc.c |   15 ++++++++++++++-
 drivers/edac/edac_mc.h |   12 ++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-edac" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c
index 4800721..52d8d5e 100644
--- a/drivers/edac/edac_mc.c
+++ b/drivers/edac/edac_mc.c
@@ -701,6 +701,19 @@ struct mem_ctl_info *edac_mc_find(int idx)
 }
 EXPORT_SYMBOL(edac_mc_find);
 
+/*
+ * Returns:
+ *	1 when EDAC MC is free or owned by the module name
+ *	0 when EDAC MC is owned by other module
+ */
+int edac_check_mc_owner(const char *mod_name)
+{
+	if (edac_mc_owner && strcmp(edac_mc_owner, mod_name))
+		return 0;
+
+	return 1;
+}
+EXPORT_SYMBOL(edac_check_mc_owner);
 
 /* FIXME - should a warning be printed if no error detection? correction? */
 int edac_mc_add_mc_with_groups(struct mem_ctl_info *mci,
@@ -742,7 +755,7 @@ int edac_mc_add_mc_with_groups(struct mem_ctl_info *mci,
 #endif
 	mutex_lock(&mem_ctls_mutex);
 
-	if (edac_mc_owner && edac_mc_owner != mci->mod_name) {
+	if (!edac_check_mc_owner(mci->mod_name)) {
 		ret = -EPERM;
 		goto fail0;
 	}
diff --git a/drivers/edac/edac_mc.h b/drivers/edac/edac_mc.h
index 5357800..0e95eba 100644
--- a/drivers/edac/edac_mc.h
+++ b/drivers/edac/edac_mc.h
@@ -128,6 +128,18 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num,
 				   unsigned sz_pvt);
 
 /**
+ *
+ * edac_check_mc_owner - Check the owner of EDAC MC
+ *
+ * @mod_name: pointer to the module name
+ *
+ * Returns:
+ *	1 when EDAC MC is free or owned by the module name
+ *	0 when EDAC MC is owned by other module
+ */
+extern int edac_check_mc_owner(const char *mod_name);
+
+/*
  * edac_mc_add_mc_with_groups() - Insert the @mci structure into the mci
  *	global list and create sysfs entries associated with @mci structure.
  *

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [v2,6/7] EDAC: add edac_check_mc_owner() to check MC owner
@ 2017-08-04  8:30 Borislav Petkov
  0 siblings, 0 replies; 7+ messages in thread
From: Borislav Petkov @ 2017-08-04  8:30 UTC (permalink / raw)
  To: Toshi Kani
  Cc: rjw, mchehab, tony.luck, lenb, linux-acpi, linux-edac,
	linux-kernel

On Thu, Aug 03, 2017 at 03:57:52PM -0600, Toshi Kani wrote:
> Only a single edac driver can be enabled for EDAC MC.  When ghes_edac
> is enabled, a regular edac driver for the CPU type / platform still
> attempts to register itself and fails in edac_mc_add_mc().
> 
> Add edac_check_mc_owner() so that regular edac drivers can check
> the owner of EDAC MC at the beginning of initialization.
> 
> Also change the owner check to string comparison from address check.
> 
> Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> Cc: Tony Luck <tony.luck@intel.com>
> ---
>  drivers/edac/edac_mc.c |   15 ++++++++++++++-
>  drivers/edac/edac_mc.h |   12 ++++++++++++
>  2 files changed, 26 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c
> index 4800721..52d8d5e 100644
> --- a/drivers/edac/edac_mc.c
> +++ b/drivers/edac/edac_mc.c
> @@ -701,6 +701,19 @@ struct mem_ctl_info *edac_mc_find(int idx)
>  }
>  EXPORT_SYMBOL(edac_mc_find);
>  
> +/*
> + * Returns:
> + *	1 when EDAC MC is free or owned by the module name

1 for free OR owned?!? WTF?

> + *	0 when EDAC MC is owned by other module
> + */
> +int edac_check_mc_owner(const char *mod_name)
> +{
> +	if (edac_mc_owner && strcmp(edac_mc_owner, mod_name))

strncmp() of course, with sensible maximal string length.

> +		return 0;
> +
> +	return 1;
> +}
> +EXPORT_SYMBOL(edac_check_mc_owner);

EXPORT_SYMBOL_GPL

>  
>  /* FIXME - should a warning be printed if no error detection? correction? */
>  int edac_mc_add_mc_with_groups(struct mem_ctl_info *mci,
> @@ -742,7 +755,7 @@ int edac_mc_add_mc_with_groups(struct mem_ctl_info *mci,
>  #endif
>  	mutex_lock(&mem_ctls_mutex);
>  
> -	if (edac_mc_owner && edac_mc_owner != mci->mod_name) {
> +	if (!edac_check_mc_owner(mci->mod_name)) {
>  		ret = -EPERM;
>  		goto fail0;
>  	}
> diff --git a/drivers/edac/edac_mc.h b/drivers/edac/edac_mc.h
> index 5357800..0e95eba 100644
> --- a/drivers/edac/edac_mc.h
> +++ b/drivers/edac/edac_mc.h
> @@ -128,6 +128,18 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num,
>  				   unsigned sz_pvt);
>  
>  /**
> + *
> + * edac_check_mc_owner - Check the owner of EDAC MC
> + *
> + * @mod_name: pointer to the module name
> + *
> + * Returns:
> + *	1 when EDAC MC is free or owned by the module name
> + *	0 when EDAC MC is owned by other module
> + */

Documenting that function only once is enough.

> +extern int edac_check_mc_owner(const char *mod_name);
> +
> +/*
>   * edac_mc_add_mc_with_groups() - Insert the @mci structure into the mci
>   *	global list and create sysfs entries associated with @mci structure.
>   *

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [v2,6/7] EDAC: add edac_check_mc_owner() to check MC owner
@ 2017-08-04 13:06 kbuild test robot
  0 siblings, 0 replies; 7+ messages in thread
From: kbuild test robot @ 2017-08-04 13:06 UTC (permalink / raw)
  To: Toshi Kani
  Cc: kbuild-all, rjw, bp, mchehab, tony.luck, lenb, linux-acpi,
	linux-edac, linux-kernel

Hi Toshi,

[auto build test WARNING on pm/linux-next]
[also build test WARNING on v4.13-rc3]
[cannot apply to edac/linux_next bp/for-next next-20170804]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Toshi-Kani/enable-ghes_edac-on-selected-platforms/20170804-190846
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
reproduce: make htmldocs

All warnings (new ones prefixed by >>):

   WARNING: convert(1) not found, for SVG to PDF conversion install ImageMagick (https://www.imagemagick.org)
   include/linux/init.h:1: warning: no structured comments found
   include/linux/mod_devicetable.h:687: warning: Excess struct/union/enum/typedef member 'ver_major' description in 'fsl_mc_device_id'
   include/linux/mod_devicetable.h:687: warning: Excess struct/union/enum/typedef member 'ver_minor' description in 'fsl_mc_device_id'
   include/linux/kthread.h:26: warning: Excess function parameter '...' description in 'kthread_create'
   kernel/sys.c:1: warning: no structured comments found
   include/linux/device.h:968: warning: No description found for parameter 'dma_ops'
   drivers/dma-buf/seqno-fence.c:1: warning: no structured comments found
>> drivers/edac/edac_mc.h:131: warning: Cannot understand  *
    on line 131 - I thought it was a doc line
   include/linux/iio/iio.h:603: warning: No description found for parameter 'trig_readonly'
   include/linux/iio/trigger.h:151: warning: No description found for parameter 'indio_dev'
   include/linux/iio/trigger.h:151: warning: No description found for parameter 'trig'
   include/linux/device.h:969: warning: No description found for parameter 'dma_ops'
   drivers/ata/libata-eh.c:1449: warning: No description found for parameter 'link'
   drivers/ata/libata-eh.c:1449: warning: Excess function parameter 'ap' description in 'ata_eh_done'
   drivers/ata/libata-eh.c:1590: warning: No description found for parameter 'qc'
   drivers/ata/libata-eh.c:1590: warning: Excess function parameter 'dev' description in 'ata_eh_request_sense'
   drivers/mtd/nand/nand_base.c:2751: warning: Excess function parameter 'cached' description in 'nand_write_page'
   drivers/mtd/nand/nand_base.c:2751: warning: Excess function parameter 'cached' description in 'nand_write_page'
   arch/s390/include/asm/cmb.h:1: warning: no structured comments found
   drivers/scsi/scsi_lib.c:1116: warning: No description found for parameter 'rq'
   drivers/scsi/constants.c:1: warning: no structured comments found
   include/linux/usb/gadget.h:230: warning: No description found for parameter 'claimed'
   include/linux/usb/gadget.h:230: warning: No description found for parameter 'enabled'
   include/linux/usb/gadget.h:412: warning: No description found for parameter 'quirk_altset_not_supp'
   include/linux/usb/gadget.h:412: warning: No description found for parameter 'quirk_stall_not_supp'
   include/linux/usb/gadget.h:412: warning: No description found for parameter 'quirk_zlp_not_supp'
   fs/inode.c:1666: warning: No description found for parameter 'rcu'
   include/linux/jbd2.h:443: warning: No description found for parameter 'i_transaction'
   include/linux/jbd2.h:443: warning: No description found for parameter 'i_next_transaction'
   include/linux/jbd2.h:443: warning: No description found for parameter 'i_list'
   include/linux/jbd2.h:443: warning: No description found for parameter 'i_vfs_inode'
   include/linux/jbd2.h:443: warning: No description found for parameter 'i_flags'
   include/linux/jbd2.h:497: warning: No description found for parameter 'h_rsv_handle'
   include/linux/jbd2.h:497: warning: No description found for parameter 'h_reserved'
   include/linux/jbd2.h:497: warning: No description found for parameter 'h_type'
   include/linux/jbd2.h:497: warning: No description found for parameter 'h_line_no'
   include/linux/jbd2.h:497: warning: No description found for parameter 'h_start_jiffies'
   include/linux/jbd2.h:497: warning: No description found for parameter 'h_requested_credits'
   include/linux/jbd2.h:497: warning: No description found for parameter 'saved_alloc_context'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_chkpt_bhs'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_devname'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_average_commit_time'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_min_batch_time'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_max_batch_time'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_commit_callback'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_failed_commit'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_chksum_driver'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_csum_seed'
   fs/jbd2/transaction.c:511: warning: No description found for parameter 'type'
   fs/jbd2/transaction.c:511: warning: No description found for parameter 'line_no'
   fs/jbd2/transaction.c:641: warning: No description found for parameter 'gfp_mask'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'set_busid'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'debugfs_init'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_open_object'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_close_object'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'prime_handle_to_fd'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'prime_fd_to_handle'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_export'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_import'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_pin'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_unpin'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_res_obj'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_get_sg_table'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_import_sg_table'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_vmap'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_vunmap'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_prime_mmap'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'gem_vm_ops'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'major'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'minor'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'patchlevel'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'name'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'desc'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'date'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'driver_features'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'ioctls'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'num_ioctls'
   include/drm/drm_drv.h:537: warning: No description found for parameter 'fops'
   include/drm/drm_color_mgmt.h:1: warning: no structured comments found
   drivers/gpu/drm/drm_syncobj.c:341: warning: Excess function parameter 'dev' description in 'drm_syncobj_open'
   drivers/gpu/drm/drm_syncobj.c:366: warning: Excess function parameter 'dev' description in 'drm_syncobj_release'
   include/drm/drm_syncobj.h:1: warning: no structured comments found
   drivers/gpu/drm/drm_syncobj.c:342: warning: Excess function parameter 'dev' description in 'drm_syncobj_open'
   drivers/gpu/drm/drm_syncobj.c:367: warning: Excess function parameter 'dev' description in 'drm_syncobj_release'
   drivers/gpu/host1x/bus.c:50: warning: Excess function parameter 'driver' description in 'host1x_subdev_add'
   Documentation/doc-guide/sphinx.rst:121: ERROR: Unknown target name: "sphinx c domain".
   kernel/sched/fair.c:7584: WARNING: Inline emphasis start-string without end-string.
   kernel/time/timer.c:1200: ERROR: Unexpected indentation.
   kernel/time/timer.c:1202: ERROR: Unexpected indentation.
   kernel/time/timer.c:1203: WARNING: Block quote ends without a blank line; unexpected unindent.
   include/linux/wait.h:108: WARNING: Block quote ends without a blank line; unexpected unindent.
   include/linux/wait.h:111: ERROR: Unexpected indentation.
   include/linux/wait.h:113: WARNING: Block quote ends without a blank line; unexpected unindent.
   kernel/time/hrtimer.c:991: WARNING: Block quote ends without a blank line; unexpected unindent.
   kernel/signal.c:323: WARNING: Inline literal start-string without end-string.
   kernel/rcu/tree.c:3187: ERROR: Unexpected indentation.
   kernel/rcu/tree.c:3214: ERROR: Unexpected indentation.
   kernel/rcu/tree.c:3215: WARNING: Bullet list ends without a blank line; unexpected unindent.
   include/linux/iio/iio.h:219: ERROR: Unexpected indentation.
   include/linux/iio/iio.h:220: WARNING: Block quote ends without a blank line; unexpected unindent.
   include/linux/iio/iio.h:226: WARNING: Definition list ends without a blank line; unexpected unindent.
   drivers/iio/industrialio-core.c:633: ERROR: Unknown target name: "iio_val".
   drivers/iio/industrialio-core.c:640: ERROR: Unknown target name: "iio_val".
   drivers/ata/libata-core.c:5906: ERROR: Unknown target name: "hw".
   drivers/message/fusion/mptbase.c:5051: WARNING: Definition list ends without a blank line; unexpected unindent.
   drivers/tty/serial/serial_core.c:1897: WARNING: Definition list ends without a blank line; unexpected unindent.
   drivers/pci/pci.c:3470: ERROR: Unexpected indentation.

vim +131 drivers/edac/edac_mc.h

    97	
    98	/**
    99	 * edac_mc_alloc() - Allocate and partially fill a struct &mem_ctl_info.
   100	 *
   101	 * @mc_num:		Memory controller number
   102	 * @n_layers:		Number of MC hierarchy layers
   103	 * @layers:		Describes each layer as seen by the Memory Controller
   104	 * @sz_pvt:		size of private storage needed
   105	 *
   106	 *
   107	 * Everything is kmalloc'ed as one big chunk - more efficient.
   108	 * Only can be used if all structures have the same lifetime - otherwise
   109	 * you have to allocate and initialize your own structures.
   110	 *
   111	 * Use edac_mc_free() to free mc structures allocated by this function.
   112	 *
   113	 * .. note::
   114	 *
   115	 *   drivers handle multi-rank memories in different ways: in some
   116	 *   drivers, one multi-rank memory stick is mapped as one entry, while, in
   117	 *   others, a single multi-rank memory stick would be mapped into several
   118	 *   entries. Currently, this function will allocate multiple struct dimm_info
   119	 *   on such scenarios, as grouping the multiple ranks require drivers change.
   120	 *
   121	 * Returns:
   122	 *	On success, return a pointer to struct mem_ctl_info pointer;
   123	 *	%NULL otherwise
   124	 */
   125	struct mem_ctl_info *edac_mc_alloc(unsigned mc_num,
   126					   unsigned n_layers,
   127					   struct edac_mc_layer *layers,
   128					   unsigned sz_pvt);
   129	
   130	/**
 > 131	 *
   132	 * edac_check_mc_owner - Check the owner of EDAC MC
   133	 *
   134	 * @mod_name: pointer to the module name
   135	 *
   136	 * Returns:
   137	 *	1 when EDAC MC is free or owned by the module name
   138	 *	0 when EDAC MC is owned by other module
   139	 */
   140	extern int edac_check_mc_owner(const char *mod_name);
   141
---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [v2,6/7] EDAC: add edac_check_mc_owner() to check MC owner
@ 2017-08-04 15:21 Toshi Kani
  0 siblings, 0 replies; 7+ messages in thread
From: Toshi Kani @ 2017-08-04 15:21 UTC (permalink / raw)
  To: lkp@intel.com
  Cc: linux-kernel@vger.kernel.org, mchehab@kernel.org,
	rjw@rjwysocki.net, kbuild-all@01.org, bp@alien8.de,
	tony.luck@intel.com, lenb@kernel.org, linux-acpi@vger.kernel.org,
	linux-edac@vger.kernel.org

On Fri, 2017-08-04 at 21:06 +0800, kbuild test robot wrote:
> Hi Toshi,
> 
> [auto build test WARNING on pm/linux-next]
> [also build test WARNING on v4.13-rc3]
> [cannot apply to edac/linux_next bp/for-next next-20170804]
> [if your patch is applied to the wrong git tree, please drop us a
> note to help improve the system]
> 
> url:    https://github.com/0day-ci/linux/commits/Toshi-Kani/enable-gh
> es_edac-on-selected-platforms/20170804-190846
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-
> pm.git linux-next
> reproduce: make htmldocs
> 
> All warnings (new ones prefixed by >>):
 :
> 	   unsigned sz_pvt);
>    129	
>    130	/**
>  > 131	 *

Removed this extra commented line.

Thanks!
-Toshi


>    132	 * edac_check_mc_owner - Check the owner of EDAC MC
>    133	 *
>    134	 * @mod_name: pointer to the module name
>    135	 *
>    136	 * Returns:
>    137	 *	1 when EDAC MC is free or owned by the module
> name
>    138	 *	0 when EDAC MC is owned by other module
>    139	 */
>    140	extern int edac_check_mc_owner(const char *mod_name);
>    141

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [v2,6/7] EDAC: add edac_check_mc_owner() to check MC owner
@ 2017-08-04 21:35 Toshi Kani
  0 siblings, 0 replies; 7+ messages in thread
From: Toshi Kani @ 2017-08-04 21:35 UTC (permalink / raw)
  To: bp@alien8.de
  Cc: linux-edac@vger.kernel.org, lenb@kernel.org, mchehab@kernel.org,
	tony.luck@intel.com, linux-kernel@vger.kernel.org,
	rjw@rjwysocki.net, linux-acpi@vger.kernel.org

T24gRnJpLCAyMDE3LTA4LTA0IGF0IDEwOjMwICswMjAwLCBCb3Jpc2xhdiBQZXRrb3Ygd3JvdGU6
DQo+IE9uIFRodSwgQXVnIDAzLCAyMDE3IGF0IDAzOjU3OjUyUE0gLTA2MDAsIFRvc2hpIEthbmkg
d3JvdGU6DQo+ID4gT25seSBhIHNpbmdsZSBlZGFjIGRyaXZlciBjYW4gYmUgZW5hYmxlZCBmb3Ig
RURBQyBNQy7CoMKgV2hlbg0KPiA+IGdoZXNfZWRhYyBpcyBlbmFibGVkLCBhIHJlZ3VsYXIgZWRh
YyBkcml2ZXIgZm9yIHRoZSBDUFUgdHlwZSAvDQo+ID4gcGxhdGZvcm0gc3RpbGwgYXR0ZW1wdHMg
dG8gcmVnaXN0ZXIgaXRzZWxmIGFuZCBmYWlscyBpbg0KPiA+IGVkYWNfbWNfYWRkX21jKCkuDQo+
ID4gDQo+ID4gQWRkIGVkYWNfY2hlY2tfbWNfb3duZXIoKSBzbyB0aGF0IHJlZ3VsYXIgZWRhYyBk
cml2ZXJzIGNhbiBjaGVjaw0KPiA+IHRoZSBvd25lciBvZiBFREFDIE1DIGF0IHRoZSBiZWdpbm5p
bmcgb2YgaW5pdGlhbGl6YXRpb24uDQo+ID4gDQo+ID4gQWxzbyBjaGFuZ2UgdGhlIG93bmVyIGNo
ZWNrIHRvIHN0cmluZyBjb21wYXJpc29uIGZyb20gYWRkcmVzcw0KPiA+IGNoZWNrLg0KPiA+IA0K
PiA+IFNpZ25lZC1vZmYtYnk6IFRvc2hpIEthbmkgPHRvc2hpLmthbmlAaHBlLmNvbT4NCj4gPiBD
YzogQm9yaXNsYXYgUGV0a292IDxicEBhbGllbjguZGU+DQo+ID4gQ2M6IE1hdXJvIENhcnZhbGhv
IENoZWhhYiA8bWNoZWhhYkBrZXJuZWwub3JnPg0KPiA+IENjOiBUb255IEx1Y2sgPHRvbnkubHVj
a0BpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gwqBkcml2ZXJzL2VkYWMvZWRhY19tYy5jIHzCoMKg
wqAxNSArKysrKysrKysrKysrKy0NCj4gPiDCoGRyaXZlcnMvZWRhYy9lZGFjX21jLmggfMKgwqDC
oDEyICsrKysrKysrKysrKw0KPiA+IMKgMiBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCsp
LCAxIGRlbGV0aW9uKC0pDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9lZGFj
X21jLmMgYi9kcml2ZXJzL2VkYWMvZWRhY19tYy5jDQo+ID4gaW5kZXggNDgwMDcyMS4uNTJkOGQ1
ZSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2VkYWMvZWRhY19tYy5jDQo+ID4gKysrIGIvZHJp
dmVycy9lZGFjL2VkYWNfbWMuYw0KPiA+IEBAIC03MDEsNiArNzAxLDE5IEBAIHN0cnVjdCBtZW1f
Y3RsX2luZm8gKmVkYWNfbWNfZmluZChpbnQgaWR4KQ0KPiA+IMKgfQ0KPiA+IMKgRVhQT1JUX1NZ
TUJPTChlZGFjX21jX2ZpbmQpOw0KPiA+IMKgDQo+ID4gKy8qDQo+ID4gKyAqIFJldHVybnM6DQo+
ID4gKyAqCTEgd2hlbiBFREFDIE1DIGlzIGZyZWUgb3Igb3duZWQgYnkgdGhlIG1vZHVsZSBuYW1l
DQo+IA0KPiAxIGZvciBmcmVlIE9SIG93bmVkPyE/IFdURj8NCg0KMSBtZWFucyB0aGUgY2FsbGVy
J3MgaW5pdCBmdW5jdGlvbiBjYW4gY29udGludWUgaXRzIGluaXRpYWxpemF0aW9uIC0tDQpzdWNo
IGNvbmRpdGlvbnMgYXJlIGZyZWUgb3Igb3duZWQgYnkgaXRzZWxmLg0KDQo+ID4gKyAqCTAgd2hl
biBFREFDIE1DIGlzIG93bmVkIGJ5IG90aGVyIG1vZHVsZQ0KPiA+ICsgKi8NCj4gPiAraW50IGVk
YWNfY2hlY2tfbWNfb3duZXIoY29uc3QgY2hhciAqbW9kX25hbWUpDQo+ID4gK3sNCj4gPiArCWlm
IChlZGFjX21jX293bmVyICYmIHN0cmNtcChlZGFjX21jX293bmVyLCBtb2RfbmFtZSkpDQo+IA0K
PiBzdHJuY21wKCkgb2YgY291cnNlLCB3aXRoIHNlbnNpYmxlIG1heGltYWwgc3RyaW5nIGxlbmd0
aC4NCg0Kc3RyY21wKCkgYnJlYWtzIHdoZW4gZWl0aGVyIGVkYWNfbWNfb3duZXIgb3IgbW9kX25h
bWUgc3RyaW5nIGVuZHMuIA0Kc3RybmNtcCgpIGFzc3VtZXMgbW9kX25hbWUgc3RyaW5nIGlzIHZh
bGlkIGZvciBhIGdpdmVuIGxlbmd0aC4gIEhlbmNlLA0KdGhlIGNhbGxlciBuZWVkcyB0byBzdXBw
bHkgdGhlIGxlbmd0aCB0byB0aGlzIGZ1bmN0aW9uIGJ5IGFkZGluZyBhIG5ldw0KYXJnICdsZW5n
dGgnLCB3aGljaCBkb2VzIG5vdCBtYWtlIGl0IGFueSBzYWZlci4gIEkgdGhpbmsgdXNpbmcNCnN0
cm5jbXAoKSB3b3VsZCByZXF1aXJlIGFsbCBlZGFjIGRyaXZlcnMgdG8gZGVjbGFyZSBhIHByZS1k
ZWZpbmVkDQpsZW5ndGggb2YgbW9kdWxlIG5hbWUuLi4NCg0KPiA+ICsJCXJldHVybiAwOw0KPiA+
ICsNCj4gPiArCXJldHVybiAxOw0KPiA+ICt9DQo+ID4gK0VYUE9SVF9TWU1CT0woZWRhY19jaGVj
a19tY19vd25lcik7DQo+IA0KPiBFWFBPUlRfU1lNQk9MX0dQTA0KDQpXaWxsIGRvLg0KDQo+ID4g
wqANCj4gPiDCoC8qIEZJWE1FIC0gc2hvdWxkIGEgd2FybmluZyBiZSBwcmludGVkIGlmIG5vIGVy
cm9yIGRldGVjdGlvbj8NCj4gPiBjb3JyZWN0aW9uPyAqLw0KPiA+IMKgaW50IGVkYWNfbWNfYWRk
X21jX3dpdGhfZ3JvdXBzKHN0cnVjdCBtZW1fY3RsX2luZm8gKm1jaSwNCj4gPiBAQCAtNzQyLDcg
Kzc1NSw3IEBAIGludCBlZGFjX21jX2FkZF9tY193aXRoX2dyb3VwcyhzdHJ1Y3QNCj4gPiBtZW1f
Y3RsX2luZm8gKm1jaSwNCj4gPiDCoCNlbmRpZg0KPiA+IMKgCW11dGV4X2xvY2soJm1lbV9jdGxz
X211dGV4KTsNCj4gPiDCoA0KPiA+IC0JaWYgKGVkYWNfbWNfb3duZXIgJiYgZWRhY19tY19vd25l
ciAhPSBtY2ktPm1vZF9uYW1lKSB7DQo+ID4gKwlpZiAoIWVkYWNfY2hlY2tfbWNfb3duZXIobWNp
LT5tb2RfbmFtZSkpIHsNCj4gPiDCoAkJcmV0ID0gLUVQRVJNOw0KPiA+IMKgCQlnb3RvIGZhaWww
Ow0KPiA+IMKgCX0NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL2VkYWNfbWMuaCBiL2Ry
aXZlcnMvZWRhYy9lZGFjX21jLmgNCj4gPiBpbmRleCA1MzU3ODAwLi4wZTk1ZWJhIDEwMDY0NA0K
PiA+IC0tLSBhL2RyaXZlcnMvZWRhYy9lZGFjX21jLmgNCj4gPiArKysgYi9kcml2ZXJzL2VkYWMv
ZWRhY19tYy5oDQo+ID4gQEAgLTEyOCw2ICsxMjgsMTggQEAgc3RydWN0IG1lbV9jdGxfaW5mbyAq
ZWRhY19tY19hbGxvYyh1bnNpZ25lZA0KPiA+IG1jX251bSwNCj4gPiDCoAkJCQnCoMKgwqB1bnNp
Z25lZCBzel9wdnQpOw0KPiA+IMKgDQo+ID4gwqAvKioNCj4gPiArICoNCj4gPiArICogZWRhY19j
aGVja19tY19vd25lciAtIENoZWNrIHRoZSBvd25lciBvZiBFREFDIE1DDQo+ID4gKyAqDQo+ID4g
KyAqIEBtb2RfbmFtZTogcG9pbnRlciB0byB0aGUgbW9kdWxlIG5hbWUNCj4gPiArICoNCj4gPiAr
ICogUmV0dXJuczoNCj4gPiArICoJMSB3aGVuIEVEQUMgTUMgaXMgZnJlZSBvciBvd25lZCBieSB0
aGUgbW9kdWxlIG5hbWUNCj4gPiArICoJMCB3aGVuIEVEQUMgTUMgaXMgb3duZWQgYnkgb3RoZXIg
bW9kdWxlDQo+ID4gKyAqLw0KPiANCj4gRG9jdW1lbnRpbmcgdGhhdCBmdW5jdGlvbiBvbmx5IG9u
Y2UgaXMgZW5vdWdoLg0KDQpJIHBlcnNvbmFsbHkgcHJlZmVyIHRvIGRvY3VtZW50IGluIC5jLCBi
dXQgc2luY2Ugb3RoZXIgZnVuY3MgZG9jdW1lbnRlZA0KaW4gZGFjX21jLmgsIEkgd2lsbCBrZWVw
IHRoZSBzYW1lIHN0eWxlLiAgV2lsbCByZW1vdmUgdGhlIGRvY3VtZW50IGluDQplZGFjX21jLmMu
IA0KDQo+ID4gK2V4dGVybiBpbnQgZWRhY19jaGVja19tY19vd25lcihjb25zdCBjaGFyICptb2Rf
bmFtZSk7DQo+ID4gKw0KPiA+ICsvKg0KPiA+IMKgICogZWRhY19tY19hZGRfbWNfd2l0aF9ncm91
cHMoKSAtIEluc2VydCB0aGUgQG1jaSBzdHJ1Y3R1cmUgaW50bw0KPiA+IHRoZSBtY2kNCj4gPiDC
oCAqCWdsb2JhbCBsaXN0IGFuZCBjcmVhdGUgc3lzZnMgZW50cmllcyBhc3NvY2lhdGVkIHdpdGgN
Cj4gPiBAbWNpIHN0cnVjdHVyZS4NCj4gPiDCoCAqDQoNClRoYW5rcywNCi1Ub3NoaQ0K
---
To unsubscribe from this list: send the line "unsubscribe linux-edac" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [v2,6/7] EDAC: add edac_check_mc_owner() to check MC owner
@ 2017-08-05  5:44 Borislav Petkov
  0 siblings, 0 replies; 7+ messages in thread
From: Borislav Petkov @ 2017-08-05  5:44 UTC (permalink / raw)
  To: Kani, Toshimitsu
  Cc: linux-edac@vger.kernel.org, lenb@kernel.org, mchehab@kernel.org,
	tony.luck@intel.com, linux-kernel@vger.kernel.org,
	rjw@rjwysocki.net, linux-acpi@vger.kernel.org

On Fri, Aug 04, 2017 at 09:35:05PM +0000, Kani, Toshimitsu wrote:
> 1 means the caller's init function can continue its initialization --
> such conditions are free or owned by itself.

Make that:

	edac_get_owner(void)

to return the owner string or NULL if there's no owner.

The caller can then do the string checking and do strncmp() to limit the
string length being checked.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [v2,6/7] EDAC: add edac_check_mc_owner() to check MC owner
@ 2017-08-07 14:55 Toshi Kani
  0 siblings, 0 replies; 7+ messages in thread
From: Toshi Kani @ 2017-08-07 14:55 UTC (permalink / raw)
  To: bp@alien8.de
  Cc: linux-acpi@vger.kernel.org, lenb@kernel.org, mchehab@kernel.org,
	tony.luck@intel.com, linux-kernel@vger.kernel.org,
	linux-edac@vger.kernel.org, rjw@rjwysocki.net

T24gU2F0LCAyMDE3LTA4LTA1IGF0IDA3OjQ0ICswMjAwLCBCb3Jpc2xhdiBQZXRrb3Ygd3JvdGU6
DQo+IE9uIEZyaSwgQXVnIDA0LCAyMDE3IGF0IDA5OjM1OjA1UE0gKzAwMDAsIEthbmksIFRvc2hp
bWl0c3Ugd3JvdGU6DQo+ID4gMSBtZWFucyB0aGUgY2FsbGVyJ3MgaW5pdCBmdW5jdGlvbiBjYW4g
Y29udGludWUgaXRzIGluaXRpYWxpemF0aW9uDQo+ID4gLS0NCj4gPiBzdWNoIGNvbmRpdGlvbnMg
YXJlIGZyZWUgb3Igb3duZWQgYnkgaXRzZWxmLg0KPiANCj4gTWFrZSB0aGF0Og0KPiANCj4gCWVk
YWNfZ2V0X293bmVyKHZvaWQpDQo+IA0KPiB0byByZXR1cm4gdGhlIG93bmVyIHN0cmluZyBvciBO
VUxMIGlmIHRoZXJlJ3Mgbm8gb3duZXIuDQo+IA0KPiBUaGUgY2FsbGVyIGNhbiB0aGVuIGRvIHRo
ZSBzdHJpbmcgY2hlY2tpbmcgYW5kIGRvIHN0cm5jbXAoKSB0byBsaW1pdA0KPiB0aGUgc3RyaW5n
IGxlbmd0aCBiZWluZyBjaGVja2VkLg0KDQpHb29kIGlkZWEhICBXaWxsIGRvLg0KDQpUaGFua3Ms
DQotVG9zaGkNCg0K
---
To unsubscribe from this list: send the line "unsubscribe linux-edac" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-08-07 14:55 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-08-07 14:55 [v2,6/7] EDAC: add edac_check_mc_owner() to check MC owner Toshi Kani
  -- strict thread matches above, loose matches on Subject: below --
2017-08-05  5:44 Borislav Petkov
2017-08-04 21:35 Toshi Kani
2017-08-04 15:21 Toshi Kani
2017-08-04 13:06 kbuild test robot
2017-08-04  8:30 Borislav Petkov
2017-08-03 21:57 Toshi Kani

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).