Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

x86/io_delay: Define IO_DELAY macros in C instead of Kconfig

CONFIG_IO_DELAY_TYPE_* are not kernel configuration at all. They just
define constant values, 0, 1, 2, and 3. Define them by #define in C.

CONFIG_DEFAULT_IO_DELAY_TYPE can also be defined in C by using #ifdef
and #define directives.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/20190521072211.21014-2-yamada.masahiro@socionext.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>

authored by

Masahiro Yamada and committed by
Ingo Molnar
c2d64c7e e62a4239

+26 -55
-44
arch/x86/Kconfig.debug
··· 179 179 decoder code. 180 180 If unsure, say "N". 181 181 182 - # 183 - # IO delay types: 184 - # 185 - 186 - config IO_DELAY_TYPE_0X80 187 - int 188 - default "0" 189 - 190 - config IO_DELAY_TYPE_0XED 191 - int 192 - default "1" 193 - 194 - config IO_DELAY_TYPE_UDELAY 195 - int 196 - default "2" 197 - 198 - config IO_DELAY_TYPE_NONE 199 - int 200 - default "3" 201 - 202 182 choice 203 183 prompt "IO delay type" 204 184 default IO_DELAY_0X80 ··· 208 228 delay for certain operations. Should work on most new machines. 209 229 210 230 endchoice 211 - 212 - if IO_DELAY_0X80 213 - config DEFAULT_IO_DELAY_TYPE 214 - int 215 - default IO_DELAY_TYPE_0X80 216 - endif 217 - 218 - if IO_DELAY_0XED 219 - config DEFAULT_IO_DELAY_TYPE 220 - int 221 - default IO_DELAY_TYPE_0XED 222 - endif 223 - 224 - if IO_DELAY_UDELAY 225 - config DEFAULT_IO_DELAY_TYPE 226 - int 227 - default IO_DELAY_TYPE_UDELAY 228 - endif 229 - 230 - if IO_DELAY_NONE 231 - config DEFAULT_IO_DELAY_TYPE 232 - int 233 - default IO_DELAY_TYPE_NONE 234 - endif 235 231 236 232 config DEBUG_BOOT_PARAMS 237 233 bool "Debug boot parameters"
+26 -11
arch/x86/kernel/io_delay.c
··· 13 13 #include <linux/dmi.h> 14 14 #include <linux/io.h> 15 15 16 - int io_delay_type __read_mostly = CONFIG_DEFAULT_IO_DELAY_TYPE; 16 + #define IO_DELAY_TYPE_0X80 0 17 + #define IO_DELAY_TYPE_0XED 1 18 + #define IO_DELAY_TYPE_UDELAY 2 19 + #define IO_DELAY_TYPE_NONE 3 20 + 21 + #if defined(CONFIG_IO_DELAY_0X80) 22 + #define DEFAULT_IO_DELAY_TYPE IO_DELAY_TYPE_0X80 23 + #elif defined(CONFIG_IO_DELAY_0XED) 24 + #define DEFAULT_IO_DELAY_TYPE IO_DELAY_TYPE_0XED 25 + #elif defined(CONFIG_IO_DELAY_UDELAY) 26 + #define DEFAULT_IO_DELAY_TYPE IO_DELAY_TYPE_UDELAY 27 + #elif defined(CONFIG_IO_DELAY_NONE) 28 + #define DEFAULT_IO_DELAY_TYPE IO_DELAY_TYPE_NONE 29 + #endif 30 + 31 + int io_delay_type __read_mostly = DEFAULT_IO_DELAY_TYPE; 17 32 18 33 static int __initdata io_delay_override; 19 34 ··· 39 24 { 40 25 switch (io_delay_type) { 41 26 default: 42 - case CONFIG_IO_DELAY_TYPE_0X80: 27 + case IO_DELAY_TYPE_0X80: 43 28 asm volatile ("outb %al, $0x80"); 44 29 break; 45 - case CONFIG_IO_DELAY_TYPE_0XED: 30 + case IO_DELAY_TYPE_0XED: 46 31 asm volatile ("outb %al, $0xed"); 47 32 break; 48 - case CONFIG_IO_DELAY_TYPE_UDELAY: 33 + case IO_DELAY_TYPE_UDELAY: 49 34 /* 50 35 * 2 usecs is an upper-bound for the outb delay but 51 36 * note that udelay doesn't have the bus-level ··· 55 40 */ 56 41 udelay(2); 57 42 break; 58 - case CONFIG_IO_DELAY_TYPE_NONE: 43 + case IO_DELAY_TYPE_NONE: 59 44 break; 60 45 } 61 46 } ··· 63 48 64 49 static int __init dmi_io_delay_0xed_port(const struct dmi_system_id *id) 65 50 { 66 - if (io_delay_type == CONFIG_IO_DELAY_TYPE_0X80) { 51 + if (io_delay_type == IO_DELAY_TYPE_0X80) { 67 52 pr_notice("%s: using 0xed I/O delay port\n", id->ident); 68 - io_delay_type = CONFIG_IO_DELAY_TYPE_0XED; 53 + io_delay_type = IO_DELAY_TYPE_0XED; 69 54 } 70 55 71 56 return 0; ··· 131 116 return -EINVAL; 132 117 133 118 if (!strcmp(s, "0x80")) 134 - io_delay_type = CONFIG_IO_DELAY_TYPE_0X80; 119 + io_delay_type = IO_DELAY_TYPE_0X80; 135 120 else if (!strcmp(s, "0xed")) 136 - io_delay_type = CONFIG_IO_DELAY_TYPE_0XED; 121 + io_delay_type = IO_DELAY_TYPE_0XED; 137 122 else if (!strcmp(s, "udelay")) 138 - io_delay_type = CONFIG_IO_DELAY_TYPE_UDELAY; 123 + io_delay_type = IO_DELAY_TYPE_UDELAY; 139 124 else if (!strcmp(s, "none")) 140 - io_delay_type = CONFIG_IO_DELAY_TYPE_NONE; 125 + io_delay_type = IO_DELAY_TYPE_NONE; 141 126 else 142 127 return -EINVAL; 143 128