kexec 2.0.2 MIPS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2012/1/24 Simon Horman <horms at verge.net.au>:
> Hi,
>
> sorry for the extensive delay in responding to this.
> I am now back from Christmas, New Year, holidays and
> attending LCA 2012.
>
> On Fri, Dec 16, 2011 at 05:27:31AM +0000, ANDY KENNEDY wrote:
>> Simon/All,
>>
>> After two months, I'm back working on this again. ?After 3 hours
>> tonight, I have the final result of what you told me to do. ?Looks like,
>> based on the comment:
>>
>> ? ? - remove kexec/arch/mips/mips-setup-simple.S which prepares cmdline for
>> ? ? ? new kernel, it is better to move this work to kernel code. BTW this code was
>> ? ? ? compilable only on o32 because of t4 is not defined on 64-64 or n32 MIPS ABIs.
>>
>> The problem is that my 2.6.36.2 apparently doesn't have whatever Maxim
>> is talking about. ?Therefore, the newer versions must not be backwards
>> compatible. ?Perhaps this is okay with you guys. ?If so, I'll just make
>> sure to include a patch to BuildRoot that clearly states that the v2.0.1
>> is the only version that works with *some* versions of MIPS. ?If you
>> guys were expecting this to be backwards compatible, I'll gladly work
>> with you to test whatever you need checked out. ?Just let me know.
>
> It is not apparent to me that the kernel code Maxim makes mention of
> exists in any released kernel. I think that the best option at this
> stage would be to revert that portion of his change.
>
> Maxim, do you have any thoughts on this?
>

Yes, kernel patches were not accepted and looks like stuck linux-mips@
queue forever.
Reverting this patches it ok for me especially if somebody going to
work on them. As I remember
the was problem with supporting all mips ABIs (o32, n32, 32-64). It's
mostly related to asm purgatory
code. It will be nice if somebody can synchronize kernel and user land
parts and make mips kexec code
board independent. I think at this time it should be much easy since
mips supports device tree.

Maxim.

> Andy, could you prepare a patch to do that?
> At the very least it ought to be useful to you.
>
>> There are build errors that I would like (if it hasn't already) to
>> be fixed
>> 1) in purgatory/Makefile, Near line 71
>>
>> $(PURGATORY): LDFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS)\
>> ? ? ? ? ? ? ? ? ? ? ? ? --no-undefined -nostartfiles -nostdlib -nodefaultlibs \
>> ? ? ? ? ? ? ? ? ? ? ? ? -e purgatory_start -r
>>
>>
>> The newer gcc's don't like --no-undefined. ?I think a fix is
>> -Wl,--no-undefined.
>
> Thanks, there is a fix for that in git and 2.0.3.
>
>> 2) In the newer version of the kexec/arch/mips/Makefile, there is
>> a -Werror in the CFLAGS. ?This causes the build to fail if using a
>> newer version of gcc, as many more warnings are available.
>
> Thanks, there is a fix for that in git and 2.0.3.
>
> Due to some quirks in the kexec build system
> -Werror was effecting all architectures.
>
>> Now, here is the result of the bisect:
>>
>> root at akennedy_lin:~/src/kexec/kexec-tools# git bisect good
>> 6adc05c6e3fdbc8b9f5d915af78ca05d0a09cb17 is the first bad commit
>> commit 6adc05c6e3fdbc8b9f5d915af78ca05d0a09cb17
>> Author: Maxim Uvarov <muvarov at gmail.com>
>> Date: ? Wed Mar 3 14:05:53 2010 +0300
>>
>> ? ? some kexec MIPS improvements
>>
>> ? ? - ?using simple ? mips* ) in configure.ac to make it compilable on mips2
>> ? ? ? ?and mips64
>> ? ? - remove kexec/arch/mips/mips-setup-simple.S which prepares cmdline for
>> ? ? ? new kernel, it is better to move this work to kernel code. BTW this code was
>> ? ? ? compilable only on o32 because of t4 is not defined on 64-64 or n32 MIPS ABIs.
>> ? ? - simple put cmdline as string, kernel code should catch cmdline like this
>>
>> ? ? int board_kexec_prepare(struct kimage *image)
>> ? ? {
>> ? ? ? ? int i;
>> ? ? ? ? char *bootloader = "kexec";
>> ? ? ? ? board_boot_desc_ptr->argc = 0;
>> ? ? ? ? for(i=0;i<image->nr_segments;i++)
>> ? ? ? ? {
>> ? ? ? ? ? ? printk("segment %d
>> ? ? ? ? ? ? if (!strncmp(bootloader, (char*)image->segment[i].buf,
>> ? ? ? ? ? ? ? ? ? ? strlen(bootloader)))
>> ? ? ? ? ? ? {
>> ? ? ? ? ? ? ? ? /*
>> ? ? ? ? ? ? ? ? ?* convert command line string to array
>> ? ? ? ? ? ? ? ? ?* of parameters (as bootloader does).
>> ? ? ? ? ? ? ? ? ?*/
>> ? ? ? ? ? ? ? ? int argc = 0, offt;
>> ? ? ? ? ? ? ? ? char *str = (char *)image->segment[i].buf;
>> ? ? ? ? ? ? ? ? char *ptr = strchr(str, ' ');
>> ? ? ? ? ? ? ? ? while (ptr && (ARGV_MAX_ARGS > argc)) {
>> ? ? ? ? ? ? ? ? ? ? *ptr = '\0';
>> ? ? ? ? ? ? ? ? ? ? if (ptr[1] != ' ') {
>> ? ? ? ? ? ? ? ? ? ? ? ? offt = (int)(ptr - str + 1);
>> ? ? ? ? ? ? ? ? ? ? ? ? boot_desc_ptr->argv[argc] =
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? image->segment[i].mem + offt;
>> ? ? ? ? ? ? ? ? ? ? ? ? argc++;
>> ? ? ? ? ? ? ? ? ? ? }
>> ? ? ? ? ? ? ? ? ? ? ptr = strchr(ptr + 1, ' ');
>> ? ? ? ? ? ? ? ? }
>> ? ? ? ? ? ? ? ? boot_desc_ptr->argc = argc;
>> ? ? ? ? ? ? ? ? break;
>> ? ? ? ? ? ? }
>> ? ? ? ? }
>> ? ? ? ?Keep it as string make code simple and more readable.
>>
>> ? ? - add crashdump support
>> ? ? - do not redefine syscalls numbers if they defined in system
>> ? ? ? remove fixups for /proc/iomem. If your board provides wrong /proc/iomem please
>> ? ? ? fix kernel, or at least you local version of kexec. No need to support it in
>> ? ? ? main line. At least add option --fake-iomem
>> ? ? - some minor fixes
>>
>> ? ? Signed-off-by: Maxim Uvarov <muvarov at gmail.com>
>> ? ? Signed-off-by: Simon Horman <horms at verge.net.au>
>>
>> :100644 100644 a911f8ad03c5321faeba93069924fa79aceeba9c 88d2e0bb2479ecd956d0ec31c571d2472fef7721 M ? ? ?configure.ac
>> :040000 040000 4dcef15024daa7ccc62bd6983e127cb87f036c5d 69204c980286b2e08308d4a10eb2bf2775d9d962 M ? ? ?kexec
>>
>> Andy
>>
>> > -----Original Message-----
>> > From: ANDY KENNEDY
>> > Sent: Thursday, September 29, 2011 1:07 PM
>> > To: 'Simon Horman'
>> > Cc: kexec at lists.infradead.org; Matt Evans; Maxim Uvarov
>> > Subject: RE: kexec 2.0.2 MIPS
>> >
>> > > My bad, yes the idea is to check between 2.0.1 and 2.0.2.
>> > > I will explain git bisect further down. However, it looking at
>> > the
>> > > logs
>> > > it strikes me that there was only one significant MIPS change
>> > > between
>> > > 2.0.1 and 2.0.2. So that seems like a likely culprit.
>> > >
>> > > Could you try the following?
>> > >
>> > > $ git clone git://github.com/horms/kexec-tools.git
>> > > $ cd kexec-tools
>> > > $ git checkout 6adc05c6e3fdbc8b9f5d915af78ca05d0a09cb17^
>> >
>> > Works.
>> >
>> > >
>> > > Build and see if it works. If so could you then try?
>> > >
>> > > $ git checkout 6adc05c6e3fdbc8b9f5d915af78ca05d0a09cb17
>> >
>> > Works.
>> >
>> > >
>> > > Build and see if it works. If it does not then
>> > > revision 6adc05c6e3fdbc8b9f5d915af78ca05d0a09cb17 starts to smell
>> > > a lot like the cause of the problem you have observed.
>> > >
>> > >
>> > > Git Bisect
>> > > ----------
>> > >
>> > > A git bisection works by doing a binary search over a set of
>> > > commits
>> > > in order to (hopefully) isolate which commit introduces a
>> > > regression.
>> > >
>> > > To this, the git commands are something along these lines:
>> > >
>> > > $ git clone git://github.com/horms/kexec-tools.git
>> > > $ cd kexec-tools
>> > > $ git checkout v2.0.1
>> >
>> > root at akennedy_lin:~/src/kexec/kexec-tools# git checkout v2.0.1
>> > error: pathspec 'v2.0.1' did not match any file(s) known to git.
>> > (yes, I run as root. ?Have since 1994, so, please no holy wars.)
>> >
>> > >
>> > > Build and confirm that it does work
>> > >
>> > > $ git checkout v2.0.2
>> > >
>> > > Build and confirm that it does not work.
>> > >
>> > > Now we actually start the bisect
>> > >
>> > > $ git bisect start
>> > > $ git bisect bad v2.0.2
>> > > $ git bisect good v2.0.1
>> > >
>> > > Git should now select a revision between v2.0.1 and v2.0.2
>> > > Test it and see if it works or not. If it does run
>> > >
>> > > $ git bisect good
>> > > If not run
>> > >
>> > > $ git bisect bad
>> > >
>> > > Git will now select another revision for you to test...
>> >
>> > I have some time right now to test, so, when you can get
>> > back to me I'll be able to continue.
>>
>> _______________________________________________
>> kexec mailing list
>> kexec at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/kexec
>>



-- 
Best regards,
Maxim Uvarov



[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux