From: Cyrill Gorcunov on 2 Aug 2010 16:20 On Mon, Aug 02, 2010 at 12:23:17PM -0700, Yinghai Lu wrote: > On 08/02/2010 08:09 AM, Cyrill Gorcunov wrote: > > On Mon, Aug 02, 2010 at 12:13:31AM -0700, Yinghai Lu wrote: > >> > >> Seperate early_console_setup from tty.c > >> also make main.c to include printf.c/string.c/cmdline.c > >> > >> will reuse early_serial_console.c/string.c/printf.c/cmdline.c in compressed/misc.c > >> > >> Signed-off-by: Yinghai Lu <yinghai(a)kernel.org> > >> > >> --- > > > > Hi Yinghai, I'll try to find some time for review though it looks somehow > > too 'big' for me :) > > > > Actually by reading your initial approach (which was much smaller in size) I > > thought we end up in something like the patch below, though I'll review this > > seris. So just to share (I've tested it under qemu). The idea is the same as > > your was, so I pushed all constant parts into header and use it when needed > > passing serial line base port via boot_params. > > Eric doesn't like early_serial_console_base in zero page. and said that is fragile. > yeah, and Peter noted too as well, I missed Eric's mail in first place. > So try to include string.c/printf.c/cmdline.c/early_serial_console.c in arch/x86/boot/compressed/misc.c > and analyze that command line again. > > then kexec path will get support too. that is from arch/x86/boot/compressed/head_32.S or head_64.S, startup_32. > and skip arch/x86/boot/main.c > > later with following patch for 3, we get all covered in c code. > 1. arch/x86/boot/main.c: setup code. > 2. arch/x86/boot/compressed/misc.c: decompress_kernel code : the 2 -v3 patches that i sent last night. > 3. arch/x86/kernel/head64.c: real kernel. > > maybe we can make early_serial_console.c and early_printk.c to share some .h etc later. > yes, sounds tempting for me ;) > Thanks > > Yinghai > > [PATCH -v2] x86: Setup early console as early as possible > > Analyze "console=uart8250,io,0x3f8,115200n8" in i386_start_kernel/x86_64_start_kernel, > and call setup_early_serial8250_console() to init early serial console. > > only can handle io port kind of 8250. because mmio need ioremap. > > -v2: use boot_params.hdr.version instead of adding another variable, Suggested by hpa > update after using x86 memblock patchset > > Signed-off-by: Yinghai Lu <yinghai(a)kernel.org> > --- .... > + > + p += 8; /* sizeof "console=" */ > + q = strchr(p, ' '); > + if ((q - p) >= sizeof(constr)) > + return; > + I think the better would be to explicitly point q=0 here, ie if (!q || ...) (yes, it'll trigger with former too but anyway this would be somewhat cleaner) > + memset(constr, 0, sizeof(constr)); > + memcpy(constr, p, q - p); > + > + lockdep_init(); > + > + setup_early_serial8250_console(constr); > +#endif > +} .... > + /* make sure if it is copied already */ > + if (boot_params.hdr.version) > + return; > + And Yinghai, lets be more verbose here a bit, since for those who will be reading this code later might be non-obvious why we have checked for 'version' here. I guess something like "an easy way to check if boot_params were already copied". Actually it's clean from commit message but I think we first read code comments and commit messages after, agreed? ;-) > memcpy(&boot_params, real_mode_data, sizeof boot_params); > if (boot_params.hdr.cmd_line_ptr) { > command_line = __va(boot_params.hdr.cmd_line_ptr); > @@ -74,6 +78,10 @@ void __init x86_64_start_kernel(char * r > /* clear bss before set_intr_gate with early_idt_handler */ > clear_bss(); > .... Other then that looks good for me, thanks! My Reviewed-by if needed. -- Cyrill -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Yinghai Lu on 2 Aug 2010 16:40 On 08/02/2010 01:17 PM, Cyrill Gorcunov wrote: > On Mon, Aug 02, 2010 at 12:23:17PM -0700, Yinghai Lu wrote: >> On 08/02/2010 08:09 AM, Cyrill Gorcunov wrote: >>> On Mon, Aug 02, 2010 at 12:13:31AM -0700, Yinghai Lu wrote: >> So try to include string.c/printf.c/cmdline.c/early_serial_console.c in arch/x86/boot/compressed/misc.c >> and analyze that command line again. >> >> then kexec path will get support too. that is from arch/x86/boot/compressed/head_32.S or head_64.S, startup_32. >> and skip arch/x86/boot/main.c >> >> later with following patch for 3, we get all covered in c code. >> 1. arch/x86/boot/main.c: setup code. >> 2. arch/x86/boot/compressed/misc.c: decompress_kernel code : the 2 -v3 patches that i sent last night. >> 3. arch/x86/kernel/head64.c: real kernel. >> >> >> [PATCH -v2] x86: Setup early console as early as possible >> >> Analyze "console=uart8250,io,0x3f8,115200n8" in i386_start_kernel/x86_64_start_kernel, >> and call setup_early_serial8250_console() to init early serial console. >> >> only can handle io port kind of 8250. because mmio need ioremap. >> >> -v2: use boot_params.hdr.version instead of adding another variable, Suggested by hpa >> update after using x86 memblock patchset >> >> Signed-off-by: Yinghai Lu <yinghai(a)kernel.org> >> --- > ... > >> + /* make sure if it is copied already */ >> + if (boot_params.hdr.version) >> + return; >> + > > And Yinghai, lets be more verbose here a bit, since for those who will > be reading this code later might be non-obvious why we have checked for > 'version' here. I guess something like "an easy way to check if boot_params > were already copied". Actually it's clean from commit message but I think > we first read code comments and commit messages after, agreed? ;-) will change to /* * hdr.version is always not 0, so check it to see * if boot_params is copied or not. */ will resend this patch after memblock x86 changes. YH -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: H. Peter Anvin on 2 Aug 2010 16:40 On 08/02/2010 12:09 PM, Thiago Farina wrote: > On Mon, Aug 2, 2010 at 3:27 PM, H. Peter Anvin <hpa(a)zytor.com> wrote: >> On 08/02/2010 10:56 AM, Thiago Farina wrote: >>> >>> These to functions above can be fairly simplified by writting as: >>> >>> static bool inline is_hex_digit(int c) { >>> return (c >= '0' && c <= '9') || >>> (c >= 'A' && c <= 'F') || >>> (c >= 'a' && c <= 'f'); >>> } >>> >> >> a) You lose the isdigit() functionality, which is useful on its own. >> b) Does this enahance readability in any way? >> c) Your proposed renaming is nonstandard. >> > > What about this instead? > > static inline bool isxdigit(int ch) { > return (isdigit(ch) || (ch >= 'A' && ch <= 'F') || (ch >= 'a' && ch <= 'f'); > } > >> As such, I don't think this is a good idea. >> Again, I don't think it adds any readability; the compiler will produce the same code. -hpa -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Cyrill Gorcunov on 2 Aug 2010 16:40 On Mon, Aug 02, 2010 at 01:30:17PM -0700, Yinghai Lu wrote: .... > >> + /* make sure if it is copied already */ > >> + if (boot_params.hdr.version) > >> + return; > >> + > > > > And Yinghai, lets be more verbose here a bit, since for those who will > > be reading this code later might be non-obvious why we have checked for > > 'version' here. I guess something like "an easy way to check if boot_params > > were already copied". Actually it's clean from commit message but I think > > we first read code comments and commit messages after, agreed? ;-) > > will change to > > /* > * hdr.version is always not 0, so check it to see > * if boot_params is copied or not. > */ > > will resend this patch after memblock x86 changes. > > YH > ok, thanks! -- Cyrill -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
First
|
Prev
|
Pages: 1 2 3 Prev: kjournald and flush being blocked for 120 sec Next: [PATCH v2 0/3] MAX8998 changes for RTC |