forked from luck/tmp_suning_uos_patched
4950276672
Patch series "kmemcheck: kill kmemcheck", v2. As discussed at LSF/MM, kill kmemcheck. KASan is a replacement that is able to work without the limitation of kmemcheck (single CPU, slow). KASan is already upstream. We are also not aware of any users of kmemcheck (or users who don't consider KASan as a suitable replacement). The only objection was that since KASAN wasn't supported by all GCC versions provided by distros at that time we should hold off for 2 years, and try again. Now that 2 years have passed, and all distros provide gcc that supports KASAN, kill kmemcheck again for the very same reasons. This patch (of 4): Remove kmemcheck annotations, and calls to kmemcheck from the kernel. [alexander.levin@verizon.com: correctly remove kmemcheck call from dma_map_sg_attrs] Link: http://lkml.kernel.org/r/20171012192151.26531-1-alexander.levin@verizon.com Link: http://lkml.kernel.org/r/20171007030159.22241-2-alexander.levin@verizon.com Signed-off-by: Sasha Levin <alexander.levin@verizon.com> Cc: Alexander Potapenko <glider@google.com> Cc: Eric W. Biederman <ebiederm@xmission.com> Cc: Michal Hocko <mhocko@kernel.org> Cc: Pekka Enberg <penberg@kernel.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Tim Hansen <devtimhansen@gmail.com> Cc: Vegard Nossum <vegardno@ifi.uio.no> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
63 lines
1.5 KiB
C
63 lines
1.5 KiB
C
/*
|
|
* Silicon Labs C2 port Linux support
|
|
*
|
|
* Copyright (c) 2007 Rodolfo Giometti <giometti@linux.it>
|
|
* Copyright (c) 2007 Eurotech S.p.A. <info@eurotech.it>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License version 2 as published by
|
|
* the Free Software Foundation
|
|
*/
|
|
|
|
#define C2PORT_NAME_LEN 32
|
|
|
|
struct device;
|
|
|
|
/*
|
|
* C2 port basic structs
|
|
*/
|
|
|
|
/* Main struct */
|
|
struct c2port_ops;
|
|
struct c2port_device {
|
|
unsigned int access:1;
|
|
unsigned int flash_access:1;
|
|
|
|
int id;
|
|
char name[C2PORT_NAME_LEN];
|
|
struct c2port_ops *ops;
|
|
struct mutex mutex; /* prevent races during read/write */
|
|
|
|
struct device *dev;
|
|
|
|
void *private_data;
|
|
};
|
|
|
|
/* Basic operations */
|
|
struct c2port_ops {
|
|
/* Flash layout */
|
|
unsigned short block_size; /* flash block size in bytes */
|
|
unsigned short blocks_num; /* flash blocks number */
|
|
|
|
/* Enable or disable the access to C2 port */
|
|
void (*access)(struct c2port_device *dev, int status);
|
|
|
|
/* Set C2D data line as input/output */
|
|
void (*c2d_dir)(struct c2port_device *dev, int dir);
|
|
|
|
/* Read/write C2D data line */
|
|
int (*c2d_get)(struct c2port_device *dev);
|
|
void (*c2d_set)(struct c2port_device *dev, int status);
|
|
|
|
/* Write C2CK clock line */
|
|
void (*c2ck_set)(struct c2port_device *dev, int status);
|
|
};
|
|
|
|
/*
|
|
* Exported functions
|
|
*/
|
|
|
|
extern struct c2port_device *c2port_device_register(char *name,
|
|
struct c2port_ops *ops, void *devdata);
|
|
extern void c2port_device_unregister(struct c2port_device *dev);
|