* [GIT PULL] hwmon fixes for 3.2
From: Jean Delvare @ 2011-11-06 19:39 UTC (permalink / raw)
To: Linus Torvalds; +Cc: LM Sensors, Guenter Roeck, LKML
Hi Linus,
Please pull hwmon subsystem fixes for Linux 3.2 from:
git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging.git hwmon-for-linus
drivers/hwmon/coretemp.c | 3 +--
drivers/hwmon/w83627ehf.c | 9 ++++++---
2 files changed, 7 insertions(+), 5 deletions(-)
---------------
Guenter Roeck (1):
hwmon: (w83627ehf) Fix broken driver init
Jean Delvare (1):
hwmon: (coretemp) Fix for non-SMP builds
Thanks,
--
Jean Delvare
^ permalink raw reply
* Re: [PATCH 2/3] fast-export: do not refer to non-existing marks
From: Sverre Rabbelier @ 2011-11-06 19:40 UTC (permalink / raw)
To: Jonathan Nieder
Cc: Junio C Hamano, Jeff King, Git List, Daniel Barkalow,
Ramkumar Ramachandra, Dmitry Ivankov, Johannes Schindelin,
Ævar Arnfjörð, Eric Herman, Fernando Vezzosi
In-Reply-To: <20111106044514.GN27272@elie.hsd1.il.comcast.net>
Heya,
On Sun, Nov 6, 2011 at 05:45, Jonathan Nieder <jrnieder@gmail.com> wrote:
>> Extract a handle_reset function that deals with this, which can then
>> be re-used in a later commit.
>
> So, does this patch drop the confusing behavior and add one that is
> more intuitive for remote helpers? It's not clear from this
> description what sort of deal the patch makes and whether it is a good
> or bad one.
Ah, yes. Perhaps something like:
"Extract a reset_ref function that deals with this situation by
printing the commit sha1 when no mark has been written yet."
> Ah --- the functional change is to use a sha1 when there is no mark
> corresponding to the object.
>
> Why is this codepath being run at all when b is excluded by the
> revision range (a..a a = ^a a a)? Is this the same bug tested
> for in patch 1/3 or something separate?
I must admit that I don't recall how exactly we stumbled on this case.
It might even make sense to instead die when we run into this corner
case, but I'm not convinced that there's no valid use case for this
(which we would block by die-ing).
--
Cheers,
Sverre Rabbelier
^ permalink raw reply
* [U-Boot] [PATCH 10/56] drivers/video/videomodes.c: fix GCC 4.6 build warning
From: Anatolij Gustschin @ 2011-11-06 19:44 UTC (permalink / raw)
To: u-boot
In-Reply-To: <1320458160-23136-11-git-send-email-wd@denx.de>
Acked-by: Anatolij Gustschin <agust@denx.de>
^ permalink raw reply
* [U-Boot] x86 cleanup patches
From: Graeme Russ @ 2011-11-06 19:46 UTC (permalink / raw)
To: u-boot
In-Reply-To: <20111106190904.AF7951893012@gemini.denx.de>
Hi Wolfgang,
On 07/11/11 06:09, Wolfgang Denk wrote:
> Dear Graeme Russ,
>
> In message <4EB67A6E.2090902@gmail.com> you wrote:
>>
>> I have two x86 tidy-up patch series that I intend to apply in the next 2-3
>> weeks to a 'next' branch on the x86 repo. Being 'next', these patches are
>> intended for the current merge window which closes on December 12
>
> You confuse me.
>
> Currently the merge window is closed. The next release is scheduled
> for December 12. ONly then, the _next_ merge window will open.
Oops, what you're saying is what I meant - next merge window
>> Please be aware that the latest series (checkpatch cleanup) is designed to
>> be applied first, but it was actually created _after_ the 'Various x86
>> cleanups' series and hence, there is a wee little bit of incompatibility
>> between the two (and silly me should have called the latest one v0 as
>> well...). The conflicts aren't so bad - I already have them resolved but
>> the second series is not checkpatch clean yet. Before I apply this series
>> to 'next' I will be posting a unified patch set in the next week or so - It
>> will be a 12 part series which will line up 1-to-1 so I'll be setting the
>> in-reply-to to thread from the current patches. In the meantime, please:
>
> This being mostly cleanup, and we still being relatively early in the
> stabilization phase, I would also accept this stuff now.
OK - There is only one patch that adds new 'features' - The 'Add multiboot
header' but that's just some canned static data, no code
>> 1) Have a look at the two independent series and let me know if there is
>> any glaring issues I need to address
>
> I will, time permitting.
Thanks
>> 2) Let me know if you need more than two weeks
>
> ?
>
>> 3) Be prepared to rebase any current x86 patches against 'next' in three
>> weeks time (unless otherwise informed)
>
> ?
>
>> Gabe, going by this schedule, there will be a good two weeks between the
>> x86 cleanup hitting 'next' and the merge window closing - I think this
>
> Which merge window are you talking about?
Sorry for the confusion - I intend to get Gabe's patches into x86/next as
soon as the next merge window opens on December 12
Regards,
Graeme
^ permalink raw reply
* Re: [PATCH -v2] acpi: Fix possible recursive locking in hwregs.c
From: Srivatsa S. Bhat @ 2011-11-06 19:46 UTC (permalink / raw)
To: Rakib Mullick; +Cc: linux-kernel, linux-acpi, akpm, ming Lin, len.brown
In-Reply-To: <1320592697.7439.3.camel@localhost.localdomain>
On 11/06/2011 08:48 PM, Rakib Mullick wrote:
> Calling pm-suspend might trigger a recursive lock in it's code path. In function acpi_hw_clear_acpi_status, acpi_os_acquire_lock holds the lock acpi_gbl_hardware_lock before calling acpi_hw_register_write(), then without releasing acpi_gbl_hardware_lock, this function calls acpi_ev_walk_gpe_list, which tries to hold acpi_gbl_gpe_lock. Both acpi_gbl_hardware_lock and acpi_gbl_gpe_lock are at same lock-class and which might cause lock recursion deadlock.
>
> Following patch fixes this scenario by just releasing acpi_gbl_hardware_lock before calling acpi_ev_walk_gpe_list.
>
> Changes since v0(https://lkml.org/lkml/2011/9/21/355):
> - Fix changelog, thanks to Lin Ming.
>
> Changes since v1 (https://lkml.org/lkml/2011/11/3/89):
> - Update changelog and rename goto label, courtesy Srivatsa S. Bhat.
>
> Signed-off-by: Rakib Mullick <rakib.mullick@gmail.com>
> Cc: Lin Ming <ming.m.lin@intel.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Len Brown <len.brown@intel.com>
> Cc: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
> ---
>
It would be a good idea to also give the lockdep warning in the changelog
(though you triggered it in a modified kernel), since that would make
it very clear as to what problem your patch is trying to solve.
[And please line-wrap your changelog to 80 characters at most, per line].
Code-wise, the patch looks good to me. So,
Reviewed-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Thanks,
Srivatsa S. Bhat
> diff --git a/drivers/acpi/acpica/hwregs.c b/drivers/acpi/acpica/hwregs.c
> index 55accb7..cc70f3f 100644
> --- a/drivers/acpi/acpica/hwregs.c
> +++ b/drivers/acpi/acpica/hwregs.c
> @@ -269,16 +269,17 @@ acpi_status acpi_hw_clear_acpi_status(void)
>
> status = acpi_hw_register_write(ACPI_REGISTER_PM1_STATUS,
> ACPI_BITMASK_ALL_FIXED_STATUS);
> - if (ACPI_FAILURE(status)) {
> - goto unlock_and_exit;
> - }
> +
> + acpi_os_release_lock(acpi_gbl_hardware_lock, lock_flags);
> +
> + if (ACPI_FAILURE(status))
> + goto exit;
>
> /* Clear the GPE Bits in all GPE registers in all GPE blocks */
>
> status = acpi_ev_walk_gpe_list(acpi_hw_clear_gpe_block, NULL);
>
> - unlock_and_exit:
> - acpi_os_release_lock(acpi_gbl_hardware_lock, lock_flags);
> +exit:
> return_ACPI_STATUS(status);
> }
>
>
>
^ permalink raw reply
* [U-Boot] [PATCH] dfu: initial implementation
From: Wolfgang Denk @ 2011-11-06 19:46 UTC (permalink / raw)
To: u-boot
In-Reply-To: <20111106170219.GB20104@excalibur.local>
Dear Stefan Schmidt,
In message <20111106170219.GB20104@excalibur.local> you wrote:
>
> > Could you please be so kind and explain which exact issues you see for
> > such a separation?
>
> As Andrzej pointed out the DFU spec is written by the USB forum and
> one can see that there target are USB devices. Let me bring in some
> facts from the spec.
...
> All bound to the USB spec and hardware for using the spec in a
> standard compliant way.
Yes, indeed.
But I feel you stick way too close to this spec, and are not trying to
abstract awway the low level details a bit.
Yes, this spec was written by the USB forum, and they did not even
attempt to look over the rim of their plates. But does that mean we
all have to do the same? I'm not willing to accept such a narrow
view.
Let's - just as a gedankenexperiment - assume our task was to
implement a solution that provides similar capabilities as DFU, but
must work over serial line, Ethernet, Bluetooth, Infrared, whatever.
Assume we thing DFU could be used as base, but we need to find a way
to move the USB related things into the USB layer, while things like
the state machine, the requests, device status, state transitions,
etc. are generic enough.
Yes, the DFU File Suffix contains fields that map nicely to USB
devices - but what prevents us to provide similar data on non-USB
media, too? We just need to make sure that th code which handles this
allows to plug in handlers for other transfer media.
> As always in computers one could try to come up with solutions to
> replace the USB hardcoded parts with something else for a UDP based
> solution. Its just now longer compliant with the DFU spec. All DFU
I'm not sure what exactly you want to tell me here.
My idea is that of an implementation that is split into a generic and
a device specific part. If implemented corectly, the combination of
the generic part with the USB specific part would be strictly
conformant to the DFU spec.
Of course, the combination of for example the DFU generic part with an
Ethernet network interface would not be conformant to the DFU spec,
but it would be something that works in a very similar way. And that
would most probably be better than inventing yet another download
method.
> flashing utils out there are only working over USB. All the windows
> flash utils as well as dfu-programmer, a small dfu util from the bluez
> project and also dfu-util. The last ones are using libusb for this.
That's the status quo. Agreed. Bit this can be changed, extended.
Or not?
> The main point is that if you replace the USB related parts with
> something else not much of DFU stays anymore. It would be a different
I disagree here. DFU is different in a number of aspects, and you
know this very well.
> flashing procedure. And for systems with a network interface available
> there are way better ways to flash it then DFU. Even TFP would be more
> convenient for them. You are way more flexible with Ethernet here.
I'm not sure what your exact argument is here. I'm not the one asking
for DFU support. I would be happy to use TFTP over Ethenret over USB.
We're actually doing this in some products.
> DFU was designed for really small devices with minimal software
> originally. Best examples are Bluetooth and WiFi USB dongles which can
> be flashed this way if they. Its just that it becomes more popular as
> many consumer electronics device are coming with a USB port but no
> Ethernet these days.
Agreed. And if it's becoming more popular, it might even be a good
idea to think about a less restricted implementation, which opens new
oportunites.
Yes, I think we should strive for such a separation of USB transport
layer and protocol implementation / state machine / command interface.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
While money can't buy happiness, it certainly lets you choose your
own form of misery.
^ permalink raw reply
* Re: [PATCH 3/3] fast-export: output reset command for commandline revs
From: Sverre Rabbelier @ 2011-11-06 19:48 UTC (permalink / raw)
To: Jonathan Nieder
Cc: Junio C Hamano, Jeff King, Git List, Daniel Barkalow,
Ramkumar Ramachandra, Dmitry Ivankov, Johannes Schindelin,
Ævar Arnfjörð, Eric Herman, Fernando Vezzosi
In-Reply-To: <20111106050126.GO27272@elie.hsd1.il.comcast.net>
Heya,
On Sun, Nov 6, 2011 at 06:01, Jonathan Nieder <jrnieder@gmail.com> wrote:
> Thanks. I'd suggest squashing in the test from patch 1/3 for easy
> reference (since each patch makes the other easier to understand).
Yes, agreed. The initial series was 5 patches in total, but splitting
it out for such a small series (and small patch at that) makes less
sense.
> These details seem like good details for the commit message, so the
> next puzzled person looking at the code can see what behavior is
> deliberate and what are the incidental side-effects.
All of it? I wasn't sure what part should go in the commit message.
> The "git fast-export a..$(git rev-parse HEAD^{commit})" case sounds
> worth a test.
A test_must_fail?
>> +#define REF_HANDLED (ALL_REV_FLAGS + 1)
>
> Could TMP_MARK be used for this?
I don't know its usage, is it?
> -static void handle_tags_and_duplicates(struct string_list *extra_refs)
>> +static void handle_tags_and_duplicates(struct rev_info *revs, struct string_list *extra_refs)
>> {
>> int i;
>>
>> + /* even if no commits were exported, we need to export the ref */
>> + for (i = 0; i < revs->cmdline.nr; i++) {
>
> Might be clearer in a new function.
Yes, probably. handle_cmdline_refs?
>> + struct rev_cmdline_entry *elem = &revs->cmdline.rev[i];
>> +
>> + if (elem->flags & UNINTERESTING)
>> + continue;
>> +
>> + if (elem->whence != REV_CMD_REV && elem->whence != REV_CMD_RIGHT)
>> + continue;
>
> Oh, neat.
Yes, I must admit that this bit was easier than I dreaded it would be
(I must admit that's been a large reason that I haven't taken the time
to work on this till now). With the fast-export and remote-helper
tests to guide me, I was able to code-by-accident the right conditions
here :).
>> +
>> + char *full_name;
>
> declaration-after-statement
Ah, yes.
>> + dwim_ref(elem->name, strlen(elem->name), elem->item->sha1, &full_name);
>> +
>> + if (!prefixcmp(full_name, "refs/tags/") &&
>
> What happens if dwim_ref fails, perhaps because a ref was deleted in
> the meantime?
That would be bad. I assumed that we have a lock on the refs, should I
add back the die check that's done by the other dwim_ref caller?
>> + (tag_of_filtered_mode != REWRITE ||
>> + !get_object_mark(elem->item)))
>> + continue;
>
> Style nit: this would be easier to read if the "if" condition doesn't
> line up with the code below it:
>
> if (!prefixcmp(full_name, "refs/tags/")) {
> if (tag_of_filtered_mode != REWRITE ||
> !get_object_mark(elem->item))
> continue;
> }
Yeah, that does look better :).
> If tag_of_filtered_mode == ABORT, we are going to die() soon, right?
I don't know to be honest, perhaps we would have already died by now?
I don't know the details of how the tag_of_filtered_mode part is
implemented.
> So this seems to be about tag_of_filtered_mode == DROP --- makes
> sense.
>
> When does the !get_object_mark() case come up?
Eh, it has something to do with it being a replacement (rather than
the same), maybe? This is mostly just taken from Dscho's original
patch.
>> + if (!(elem->flags & REF_HANDLED)) {
>> + handle_reset(full_name, elem->item);
>> + elem->flags |= REF_HANDLED;
>> + }
>
> Just curious: is the REF_HANDLED handling actually needed? What
> would happen if fast-export included the redundant resets?
That would just be sloppy :). I don't think anything particularly bad
would happen.
> Thanks for a pleasant read.
Thanks for the review.
--
Cheers,
Sverre Rabbelier
^ permalink raw reply
* [U-Boot] [PATCH] powerpc: Revert "arch/powerpc/lib/board.c: fix build warning"
From: Wolfgang Denk @ 2011-11-06 19:49 UTC (permalink / raw)
To: u-boot
In-Reply-To: <201111061306.37421.vapier@gentoo.org>
Dear Mike Frysinger,
In message <201111061306.37421.vapier@gentoo.org> you wrote:
>
> have you pushed out your master in a while ? i see your tree sitting at
> fec79acc864bed049b6beae719ccbf2bbec5403a which still has this warning. i also
> don't see commit ecfd752 in your tree.
master is in sync. But you are right - ecfd752 is in my GCC 4.6
cleanup branch.
I will wait another day for feedback on these and then pull them.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Is truth not truth for all?
-- Natira, "For the World is Hollow and I have Touched
the Sky", stardate 5476.4.
^ permalink raw reply
* [U-Boot] x86 cleanup patches
From: Wolfgang Denk @ 2011-11-06 19:50 UTC (permalink / raw)
To: u-boot
In-Reply-To: <4EB6E405.4060509@gmail.com>
Dear Graeme Russ,
In message <4EB6E405.4060509@gmail.com> you wrote:
>
> > This being mostly cleanup, and we still being relatively early in the
> > stabilization phase, I would also accept this stuff now.
>
> OK - There is only one patch that adds new 'features' - The 'Add multiboot
> header' but that's just some canned static data, no code
So let's add the stuff now.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"IBM uses what I like to call the 'hole-in-the-ground technique' to
destroy the competition..... IBM digs a big HOLE in the ground and
covers it with leaves. It then puts a big POT OF GOLD nearby. Then it
gives the call, 'Hey, look at all this gold, get over here fast.' As
soon as the competitor approaches the pot, he falls into the pit"
- John C. Dvorak
^ permalink raw reply
* [xen-unstable test] 9718: regressions - trouble: blocked/broken/fail/pass
From: xen.org @ 2011-11-06 19:50 UTC (permalink / raw)
To: xen-devel; +Cc: ian.jackson
flight 9718 xen-unstable real [real]
http://www.chiark.greenend.org.uk/~xensrcts/logs/9718/
Regressions :-(
Tests which did not succeed and are blocking:
test-i386-i386-pv 3 host-install(3) broken
test-i386-i386-xl 18 leak-check/check fail REGR. vs. 9661
build-amd64-pvops 2 host-install(2) broken
test-i386-i386-win 3 host-install(3) broken
test-amd64-i386-rhel6hvm-intel 3 host-install(3) broken in 9717
test-amd64-i386-xl 18 leak-check/check fail in 9717 REGR. vs. 9661
test-amd64-i386-xl-credit2 18 leak-check/check fail in 9717 REGR. vs. 9661
test-amd64-i386-xl-multivcpu 18 leak-check/check fail in 9717 REGR. vs. 9661
test-i386-i386-xl-win 3 host-install(3) broken in 9717
Tests which are failing intermittently (not blocking):
build-amd64-oldkern 4 xen-build fail pass in 9717
build-amd64 4 xen-build fail pass in 9717
Tests which did not succeed, but are not blocking,
including regressions (tests previously passed) regarded as allowable:
test-amd64-amd64-xl-pcipt-intel 1 xen-build-check(1) blocked n/a
test-amd64-amd64-pv 1 xen-build-check(1) blocked n/a
test-amd64-i386-rhel6hvm-intel 1 xen-build-check(1) blocked n/a
test-amd64-amd64-xl 1 xen-build-check(1) blocked n/a
test-amd64-i386-pv 1 xen-build-check(1) blocked n/a
test-amd64-amd64-xl-sedf 1 xen-build-check(1) blocked n/a
test-amd64-i386-xl 1 xen-build-check(1) blocked n/a
test-amd64-i386-xl-credit2 1 xen-build-check(1) blocked n/a
test-amd64-i386-rhel6hvm-amd 1 xen-build-check(1) blocked n/a
test-amd64-i386-xl-multivcpu 1 xen-build-check(1) blocked n/a
test-amd64-amd64-pair 1 xen-build-check(1) blocked n/a
test-amd64-amd64-win 1 xen-build-check(1) blocked n/a
test-amd64-i386-pair 1 xen-build-check(1) blocked n/a
test-amd64-i386-win-vcpus1 1 xen-build-check(1) blocked n/a
test-amd64-i386-xl-win-vcpus1 1 xen-build-check(1) blocked n/a
test-i386-i386-xl-win 13 guest-stop fail never pass
test-amd64-i386-win 1 xen-build-check(1) blocked n/a
test-amd64-amd64-xl-win 1 xen-build-check(1) blocked n/a
test-amd64-i386-rhel6hvm-amd 9 guest-start.2 fail in 9717 never pass
test-amd64-i386-win-vcpus1 16 leak-check/check fail in 9717 never pass
test-amd64-i386-xl-win-vcpus1 13 guest-stop fail in 9717 never pass
test-amd64-i386-win 16 leak-check/check fail in 9717 never pass
test-i386-i386-win 16 leak-check/check fail in 9717 never pass
version targeted for testing:
xen 604a90b803d3
baseline version:
xen 54a5e994a241
------------------------------------------------------------
People who touched revisions under test:
Andrew Cooper <andrew.cooper3@citrix.com>
Anthony PERARD <anthony.perard@citrix.com>
Christoph Egger <Christoph.Egger@amd.com>
Ian Campbell <ian.campbell@citrix.com>
Ian Jackson <ian.jackson.citrix.com>
Ian Jackson <ian.jackson@eu.citrix.com>
Jan Beulich <jbeulich@suse.com>
juergen.gross@ts.fujitsu.com
Keir Fraser <keir@xen.org>
Tim Deegan <tim@xen.org>
------------------------------------------------------------
jobs:
build-amd64 fail
build-i386 pass
build-amd64-oldkern fail
build-i386-oldkern pass
build-amd64-pvops broken
build-i386-pvops pass
test-amd64-amd64-xl blocked
test-amd64-i386-xl blocked
test-i386-i386-xl fail
test-amd64-i386-rhel6hvm-amd blocked
test-amd64-i386-xl-credit2 blocked
test-amd64-amd64-xl-pcipt-intel blocked
test-amd64-i386-rhel6hvm-intel blocked
test-amd64-i386-xl-multivcpu blocked
test-amd64-amd64-pair blocked
test-amd64-i386-pair blocked
test-i386-i386-pair pass
test-amd64-amd64-pv blocked
test-amd64-i386-pv blocked
test-i386-i386-pv broken
test-amd64-amd64-xl-sedf blocked
test-amd64-i386-win-vcpus1 blocked
test-amd64-i386-xl-win-vcpus1 blocked
test-amd64-amd64-win blocked
test-amd64-i386-win blocked
test-i386-i386-win broken
test-amd64-amd64-xl-win blocked
test-i386-i386-xl-win fail
------------------------------------------------------------
sg-report-flight on woking.cam.xci-test.com
logs: /home/xc_osstest/logs
images: /home/xc_osstest/images
Logs, config files, etc. are available at
http://www.chiark.greenend.org.uk/~xensrcts/logs
Test harness code can be found at
http://xenbits.xensource.com/gitweb?p=osstest.git;a=summary
Not pushing.
------------------------------------------------------------
changeset: 24083:604a90b803d3
tag: tip
user: Anthony PERARD <anthony.perard@citrix.com>
date: Fri Nov 04 15:34:50 2011 +0000
libxl: Remove a passthrough device through QMP.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
---
tools/libxl/libxl_pci.c | 72 +++++++++++++++++++++++++++++++---------------
1 files changed, 48 insertions(+), 24 deletions(-)
changeset: 24082:e22e108e1c57
user: Anthony PERARD <anthony.perard@citrix.com>
date: Fri Nov 04 15:34:50 2011 +0000
libxl: libxl_qmp: Introduce libxl__qmp_pci_del
To remove a pci passthough device from QEMU (upstream).
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
---
tools/libxl/libxl_internal.h | 2 ++
tools/libxl/libxl_qmp.c | 35 +++++++++++++++++++++++++++++++++++
2 files changed, 37 insertions(+), 0 deletions(-)
changeset: 24081:659c800d7edf
user: Jan Beulich <jbeulich@suse.com>
date: Fri Nov 04 15:55:50 2011 +0100
x86/IRQ: fix create_irq() after c/s 24068:6928172f7ded
init_one_irq_desc() must be called with interrupts enabled (as it may
call functions from the xmalloc() group). Rather than mis-using
vector_lock to also protect the finding of an unused IRQ, make this
lockless through using cmpxchg(), and obtain the lock only around the
actual assignment of the vector.
Also fold find_unassigned_irq() into its only caller.
It is, btw, questionable whether create_irq() calling
__assign_irq_vector() (rather than assign_irq_vector()) is actually
correct - desc->affinity appears to not get initialized properly in
this case.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
changeset: 24080:974b00c7c2d0
user: Anthony PERARD <anthony.perard@citrix.com>
date: Fri Nov 04 14:24:07 2011 +0000
libxl: Use QMP to insert a passthrough device when using upstream QEMU
Also move the xenstore specific code to a new function and add a
message if sscanf fails.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
changeset: 24079:a67944b1adfb
user: Anthony PERARD <anthony.perard@citrix.com>
date: Fri Nov 04 14:24:07 2011 +0000
libxl: libxl_qmp: Introduce libxl__qmp_pci_add.
This function insert a PCI passthrough device in qemu.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
changeset: 24078:c5fe74068253
user: Anthony PERARD <anthony.perard@citrix.com>
date: Fri Nov 04 12:38:25 2011 +0000
libxl: libxl_json: Handle number above LONG_MAX.
The integers are now "long long" in the json_object.
If a number (decimal or integer) is too big (or too low), it is stored as it in
a string. So for that, we introduce a new type JSON_NUMBER.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
changeset: 24077:8d06378f1487
user: Anthony PERARD <anthony.perard@citrix.com>
date: Fri Nov 04 12:38:25 2011 +0000
libxl: libxl_qmp: Introduce qmp_request_context.
This structure helps to track the return code of a callback. It's only used
between qmp_synchronous_send and qmp_send.
Now, qmp_synchronous_send will return the rc of the callback if there is no
error.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
changeset: 24076:0406f6783c65
user: Anthony PERARD <anthony.perard@citrix.com>
date: Fri Nov 04 12:38:24 2011 +0000
libxl: libxl_qmp: Always insert a command id in the callback_list.
Because the function qmp_synchronous_send rely on the presence of the id
in the callback_list.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
changeset: 24075:918a2091c181
user: Anthony PERARD <anthony.perard@citrix.com>
date: Fri Nov 04 12:38:24 2011 +0000
libxl: libxl_qmp: Introduce list of arguments to qmp_send
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
changeset: 24074:9641b7594ed6
user: Anthony PERARD <anthony.perard@citrix.com>
date: Fri Nov 04 12:38:23 2011 +0000
libxl: libxl_qmp: Introduce an opaque argument to the callbacks.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
changeset: 24073:7b22d2f98302
user: Anthony PERARD <anthony.perard@citrix.com>
date: Fri Nov 04 12:38:23 2011 +0000
libxl: libxl: Introduce dm-version xenstore key.
The all key is /libxl/$domid/dm-version.
The /libxl/$domid dir is created with the domain and should be only accessible
by the toolstack domain. The function libxl__xs_libxl_path() give this path.
This come with libxl__device_model_version_running() helper function.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
changeset: 24072:cf8924724b61
user: Anthony PERARD <anthony.perard@citrix.com>
date: Fri Nov 04 12:38:22 2011 +0000
libxl: libxl_qmp: Better error message after a parse error.
By setting the next string to parse after having printed any error messages.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
changeset: 24071:bdbd100b28ae
user: Anthony PERARD <anthony.perard@citrix.com>
date: Fri Nov 04 12:38:22 2011 +0000
libxl: libxl_json: Check the parser status before to call parse_complete
Also, use goto to handle an error.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
changeset: 24070:e0b6b0e68e90
user: Anthony PERARD <anthony.perard@citrix.com>
date: Fri Nov 04 12:38:22 2011 +0000
libxl: libxl_qmp: Fix return check of fcntl
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
changeset: 24069:801ca6c0fbfa
user: Jan Beulich <jbeulich@suse.com>
date: Thu Nov 03 17:28:41 2011 +0100
x86/IRQ: consolidate IRQ disabling when acquiring vector lock
__assign_irq_vector() doesn't need to disable interrupts (its callers
are required to when acquiring the lock), and set_desc_affinity() can
use the normal spin lock primitives.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
changeset: 24068:6928172f7ded
user: Jan Beulich <jbeulich@suse.com>
date: Thu Nov 03 17:27:38 2011 +0100
IRQ: allocate CPU masks dynamically
This includes delaying the initialization of dynamically created IRQs
until their actual first use and some further elimination of uses of
struct irq_cfg.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
changeset: 24067:17ee4c213438
user: Tim Deegan <tim@xen.org>
date: Thu Nov 03 12:19:23 2011 +0000
xen: provide pse36 cpuid bit
Provide pse36 cpuid bit if guest runs in 32bit PAE
or in long mode. Hyper-V refuses to start as
the "cpu does not provide required hw features"
if it does not find the pse36 cpuid bits.
Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
changeset: 24066:54a5e994a241
user: Juergen Gross <juergen.gross@ts.fujitsu.com>
date: Wed Nov 02 17:09:09 2011 +0000
docs: Correct man page of xl regarding cpu-pools
Signed-off-by: juergen.gross@ts.fujitsu.com
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
========================================
commit 52834188eedfbbca5636fd869d4c86b3b3044439
Author: Ian Campbell <ian.campbell@citrix.com>
Date: Tue Nov 1 18:42:55 2011 +0000
qemu-xen: remove i386-dm/README.hvm-pv-magic-ioport-disable
I have just proposed a patch to add this to xen-unstable.hg as
docs/misc/hvm-emulated-unplug.markdown. This repo is not a place where people
look for docs, plus we are transitioning to upstream qemu.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
^ permalink raw reply
* Re: [PATCH] x86: Fix reboot issue for Dell Optiplex 990 V2
From: Valdis.Kletnieks @ 2011-11-06 19:48 UTC (permalink / raw)
To: Ismail Donmez; +Cc: Thomas Renninger, linux-kernel, x86, stable
In-Reply-To: <4EB39139.3090709@suse.de>
[-- Attachment #1: Type: text/plain, Size: 741 bytes --]
On Fri, 04 Nov 2011 08:16:09 BST, Ismail Donmez said:
> On 11/04/2011 03:29 AM, Thomas Renninger wrote:
> > This was the only (reboot=p) option that worked for this desktop.
> > Default does not reboot as well.
> > DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6420"),
> > + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990"),
> I have this machine and can confirm reboot=pci is only way to get it to
> reboot. But also Dell's very recent Latitude E6520 laptop needs the same
> workaround. It would be nice to send a patch for it too.
Just as another data point, my Latitude E6500 does *not* need this, as it's perfectly
happy using the default reboot method. So please avoid the temptation to do
a match on "Latitude E6" ;)
[-- Attachment #2: Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply
* Re: ixgbe: compilation failed if CONFIG_PCI_IOV isn't set
From: Or Gerlitz @ 2011-11-06 19:51 UTC (permalink / raw)
To: jeffrey.t.kirsher
Cc: Alexander Kolesen, netdev@vger.kernel.org, Rose, Gregory V,
Li, Sibai
In-Reply-To: <1320549540.5386.29.camel@jtkirshe-mobl>
On Sun, Nov 6, 2011 at 5:18 AM, Jeff Kirsher
<jeffrey.t.kirsher@intel.com> wrote:
> Was with the latest kernel from David Miller's net.gt tree? I just ask
> because I just pushed a patch (a couple of days ago) to resolve
> compilation errors when CONFIG_PCI_IOV is not enabled by Greg Rose.
In my case it was with Linus tree from github
Or.
^ permalink raw reply
* [U-Boot] [PATCH] env: fix "env ask" command
From: Wolfgang Denk @ 2011-11-06 19:52 UTC (permalink / raw)
To: u-boot
In-Reply-To: <1319647072-17504-1-git-send-email-gerlando.falauto@keymile.com>
The "env ask" traditionally uses a somewhat awkward syntax:
env ask name [message ...] [size]
So far, when a mesage was given, you always also had to enter a size.
If you forgot to do that, the command would terminate without any
indication of the problem.
To avoid incompatible changes of the interface, we now check the last
argument if it can be converted into a decimal number. If this is the
case, we assume it is a size; otherwise we treat it as part of the
message.
Also, add a space after the message fore easier reading.
Signed-off-by: Wolfgang Denk <wd@denx.de>
---
Note: this patch was generated on top of Gerlando Falauto's
"generalization of env interface" patch series. THis should be
applied before.
common/cmd_nvedit.c | 46 ++++++++++++++++++++++++++++------------------
1 files changed, 28 insertions(+), 18 deletions(-)
diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
index 5507922..2dd4eba 100644
--- a/common/cmd_nvedit.c
+++ b/common/cmd_nvedit.c
@@ -465,40 +465,50 @@ int do_env_ask(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
extern char console_buffer[CONFIG_SYS_CBSIZE];
char message[CONFIG_SYS_CBSIZE];
- int size = CONFIG_SYS_CBSIZE - 1;
- int i, len, pos;
+ int i, len, pos, size;
char *local_args[4];
+ char *endptr;
local_args[0] = argv[0];
local_args[1] = argv[1];
local_args[2] = NULL;
local_args[3] = NULL;
- /* Check the syntax */
- switch (argc) {
- case 1:
+ /*
+ * Check the syntax:
+ *
+ * env_ask envname [message1 ...] [size]
+ */
+ if (argc == 1)
return cmd_usage(cmdtp);
- case 2: /* env_ask envname */
- sprintf(message, "Please enter '%s':", argv[1]);
- break;
-
- case 3: /* env_ask envname size */
- sprintf(message, "Please enter '%s':", argv[1]);
- size = simple_strtoul(argv[2], NULL, 10);
- break;
-
- default: /* env_ask envname message1 ... messagen size */
- for (i = 2, pos = 0; i < argc - 1; i++) {
+ /*
+ * We test the last argument if it can be converted
+ * into a decimal number. If yes, we assume it's
+ * the size. Otherwise we echo it as part of the
+ * message.
+ */
+ i = simple_strtoul(argv[argc - 1], &endptr, 10);
+ if (*endptr != '\0') { /* no size */
+ size = CONFIG_SYS_CBSIZE - 1;
+ } else { /* size given */
+ size = i;
+ --argc;
+ }
+
+ if (argc <= 2) {
+ sprintf(message, "Please enter '%s': ", argv[1]);
+ } else {
+ /* env_ask envname message1 ... messagen [size] */
+ for (i = 2, pos = 0; i < argc; i++) {
if (pos)
message[pos++] = ' ';
strcpy(message+pos, argv[i]);
pos += strlen(argv[i]);
}
+ message[pos++] = ' ';
message[pos] = '\0';
- size = simple_strtoul(argv[argc - 1], NULL, 10);
- break;
}
if (size >= CONFIG_SYS_CBSIZE)
--
1.7.6.4
^ permalink raw reply related
* Re: [PATCH v2] pull: introduce a pull.rebase option to enable --rebase
From: Johannes Sixt @ 2011-11-06 19:53 UTC (permalink / raw)
To: Ævar Arnfjörð Bjarmason
Cc: git, Junio C Hamano, Eric Herman, Sverre Rabbelier,
Fernando Vezzosi, Johannes Schindelin
In-Reply-To: <1320573010-12296-1-git-send-email-avarab@gmail.com>
Am 06.11.2011 10:50, schrieb Ævar Arnfjörð Bjarmason:
> diff --git a/Documentation/config.txt b/Documentation/config.txt
> index 5a841da..b2d7d92 100644
> --- a/Documentation/config.txt
> +++ b/Documentation/config.txt
> @@ -677,7 +677,9 @@ branch.<name>.mergeoptions::
> branch.<name>.rebase::
> When true, rebase the branch <name> on top of the fetched branch,
> instead of merging the default branch from the default remote when
> - "git pull" is run.
> + "git pull" is run. See "pull.rebase" for doing this in a non
> + branch-specific manner.
> +
> *NOTE*: this is a possibly dangerous operation; do *not* use
> it unless you understand the implications (see linkgit:git-rebase[1]
> for details).
When you continue an indented item in a separate paragraph, then you
must not use an empty line, but have line with '+' and un-indented
continuation paragraphs. See examples in this file.
-- Hannes
^ permalink raw reply
* Re: [Xenomai-help] Xenomai 2.6.0 - kernel seg faults on AT91
From: at91_enthus @ 2011-11-06 19:54 UTC (permalink / raw)
To: xenomai
In-Reply-To: <4EB6DA0E.9070802@domain.hid>
[-- Attachment #1: Type: text/plain, Size: 2394 bytes --]
On 11/06/2011 01:03 PM, Gilles Chanteperdrix wrote:
> On 11/06/2011 08:00 PM, at91_enthus wrote:
>> On 11/06/2011 12:32 PM, Gilles Chanteperdrix wrote:
>>> On 11/06/2011 07:25 PM, at91_enthus wrote:
>>>> On 11/06/2011 12:10 PM, at91_enthus wrote:
>>>>> On 11/06/2011 12:01 PM, Gilles Chanteperdrix wrote:
>>>>>> On 11/06/2011 06:56 PM, at91_enthus wrote:
>>>>>>> Hi.
>>>>>>>
>>>>>>> I gave Xenomai 2.6.0 a try and installed a newly patched kernel on my
>>>>>>> AT91SAM9G20 board.
>>>>>>>
>>>>>>> Here is my setup:
>>>>>>>
>>>>>>> proc: AT91SAM9G20
>>>>>>> kernel: 2.6.35.9
>>>>>>> OS: embedded Debian Squeeze
>>>>>>>
>>>>>>> The board boots fine up to stage 2 (user terminal). Sometimes, I am able
>>>>>>> to get a login terminal, despite seg fault messages.
>>>>>>>
>>>>>>> A similar behavior occurs in a Xenomai capable 2.6.37 kernel, only
>>>>>>> without the fault messages. In this case the board simply freezes.
>>>>>>>
>>>>>>> I included the files (.config and fault messages) in the attachments.
>>>>>>>
>>>>>> You enabled CONFIG_FCSE_GUARANTEED, I do not think Debian squeeze can
>>>>>> boot with that, you need a real embedded filesystem, or use
>>>>>> CONFIG_FCSE_BEST_EFFORT.
>>>>>>
>>>>>>
>>>>> Since I've started looking in to Xenomai, I have been using FCSE
>>>>> "guaranteed" and "best efort" along with both Debian Squeeze and Lenny
>>>>> (Xenomai 2.5 series) without any issues.
>>>>>
>>>>> I'll change the FCSE setting to see if I get a different behavior.
>>>>>
>>>>> Regards.
>>>> I put the results for CONFIG_FCSE_BEST_EFFORT in the attachment.
>>> Unusable. To make it usable, the following options are lacking:
>>> CONFIG_FCSE_MESSAGES
>>> CONFIG_FRAME_POINTER
>> I couldn't find this option.
> You need to disable STACK_UNWIND. Without it, some stack traces are
> unreadable such as the one you keep sending.
>
rc.local looked suspicious in the debug messages.
To be more exact, it contained the following lines:
#! /bin/sh
chmod 777 /proc/xenomai/latency
echo "1000" > /proc/xenomai/latency
exit 0
The setting came from the previous installation, because I kept getting
negative values for latencies.
Anyway, I removed the offending lines and my system boots correctly. If
I enter the lines by hand, I get no segfaults. However, if I try to
execute /etc/rc.local (with the two lines uncommented) by hand, the
kernel seg faults and the system freezes.
Odd.
[-- Attachment #2: .config --]
[-- Type: text/plain, Size: 35876 bytes --]
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.35.9
# Sun Nov 6 13:19:29 2011
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_GENERIC_GPIO=y
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_TIME_VSYSCALL=y
# CONFIG_ARCH_USES_GETTIMEOFFSET is not set
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_HAVE_PROC_CPU=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_CONSTRUCTORS=y
#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_CROSS_COMPILE=""
CONFIG_LOCALVERSION="-xenomai"
CONFIG_LOCALVERSION_AUTO=y
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_LZO=y
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_LZO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_AUDIT is not set
#
# RCU Subsystem
#
CONFIG_TREE_RCU=y
# CONFIG_TREE_PREEMPT_RCU is not set
# CONFIG_TINY_RCU is not set
# CONFIG_RCU_TRACE is not set
CONFIG_RCU_FANOUT=32
# CONFIG_RCU_FANOUT_EXACT is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_CGROUPS is not set
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y
# CONFIG_RELAY is not set
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
# CONFIG_NET_NS is not set
# CONFIG_BLK_DEV_INITRD is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_USE_VMALLOC=y
#
# Kernel Performance Events And Counters
#
# CONFIG_PERF_EVENTS is not set
# CONFIG_PERF_COUNTERS is not set
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_COMPAT_BRK=y
CONFIG_SLAB=y
# CONFIG_SLUB is not set
# CONFIG_SLOB is not set
# CONFIG_PROFILING is not set
CONFIG_HAVE_OPROFILE=y
# CONFIG_KPROBES is not set
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_CLK=y
#
# GCOV-based kernel profiling
#
# CONFIG_SLOW_WORK is not set
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_BLOCK=y
CONFIG_LBDAF=y
CONFIG_BLK_DEV_BSG=y
# CONFIG_BLK_DEV_INTEGRITY is not set
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_CFQ is not set
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
CONFIG_DEFAULT_NOOP=y
CONFIG_DEFAULT_IOSCHED="noop"
# CONFIG_INLINE_SPIN_TRYLOCK is not set
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK is not set
# CONFIG_INLINE_SPIN_LOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
CONFIG_INLINE_SPIN_UNLOCK=y
# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
# CONFIG_INLINE_READ_TRYLOCK is not set
# CONFIG_INLINE_READ_LOCK is not set
# CONFIG_INLINE_READ_LOCK_BH is not set
# CONFIG_INLINE_READ_LOCK_IRQ is not set
# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
CONFIG_INLINE_READ_UNLOCK=y
# CONFIG_INLINE_READ_UNLOCK_BH is not set
CONFIG_INLINE_READ_UNLOCK_IRQ=y
# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
# CONFIG_INLINE_WRITE_TRYLOCK is not set
# CONFIG_INLINE_WRITE_LOCK is not set
# CONFIG_INLINE_WRITE_LOCK_BH is not set
# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
CONFIG_INLINE_WRITE_UNLOCK=y
# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
# CONFIG_MUTEX_SPIN_ON_OWNER is not set
#
# Real-time sub-system
#
CONFIG_XENOMAI=y
CONFIG_XENO_GENERIC_STACKPOOL=y
CONFIG_XENO_FASTSYNCH_DEP=y
CONFIG_XENO_FASTSYNCH=y
CONFIG_XENO_OPT_NUCLEUS=y
CONFIG_XENO_OPT_PERVASIVE=y
CONFIG_XENO_OPT_PRIOCPL=y
CONFIG_XENO_OPT_PIPELINE_HEAD=y
# CONFIG_XENO_OPT_SCHED_CLASSES is not set
CONFIG_XENO_OPT_PIPE=y
CONFIG_XENO_OPT_VFILE=y
CONFIG_XENO_OPT_PIPE_NRDEV=32
CONFIG_XENO_OPT_REGISTRY_NRSLOTS=512
CONFIG_XENO_OPT_SYS_HEAPSZ=256
CONFIG_XENO_OPT_SYS_STACKPOOLSZ=128
CONFIG_XENO_OPT_SEM_HEAPSZ=12
CONFIG_XENO_OPT_GLOBAL_SEM_HEAPSZ=12
CONFIG_XENO_OPT_STATS=y
CONFIG_XENO_OPT_DEBUG=y
# CONFIG_XENO_OPT_DEBUG_NUCLEUS is not set
# CONFIG_XENO_OPT_DEBUG_XNLOCK is not set
# CONFIG_XENO_OPT_DEBUG_QUEUES is not set
# CONFIG_XENO_OPT_DEBUG_REGISTRY is not set
# CONFIG_XENO_OPT_DEBUG_TIMERS is not set
# CONFIG_XENO_OPT_DEBUG_SYNCH_RELAX is not set
CONFIG_XENO_OPT_WATCHDOG=y
CONFIG_XENO_OPT_WATCHDOG_TIMEOUT=4
CONFIG_XENO_OPT_SHIRQ=y
CONFIG_XENO_OPT_SELECT=y
CONFIG_XENO_OPT_HOSTRT=y
#
# Timing
#
# CONFIG_XENO_OPT_TIMING_PERIODIC is not set
CONFIG_XENO_OPT_TIMING_VIRTICK=1000
CONFIG_XENO_OPT_TIMING_SCHEDLAT=0
#
# Scalability
#
# CONFIG_XENO_OPT_SCALABLE_SCHED is not set
CONFIG_XENO_OPT_TIMER_LIST=y
# CONFIG_XENO_OPT_TIMER_HEAP is not set
# CONFIG_XENO_OPT_TIMER_WHEEL is not set
#
# Machine
#
CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH=y
CONFIG_XENO_HW_FPU=y
CONFIG_XENO_HW_UNLOCKED_SWITCH=y
#
# Interfaces
#
CONFIG_XENO_SKIN_NATIVE=y
CONFIG_XENO_OPT_NATIVE_PERIOD=0
CONFIG_XENO_OPT_NATIVE_PIPE=y
CONFIG_XENO_OPT_NATIVE_PIPE_BUFSZ=1024
CONFIG_XENO_OPT_NATIVE_SEM=y
CONFIG_XENO_OPT_NATIVE_EVENT=y
CONFIG_XENO_OPT_NATIVE_MUTEX=y
CONFIG_XENO_OPT_NATIVE_COND=y
CONFIG_XENO_OPT_NATIVE_QUEUE=y
CONFIG_XENO_OPT_NATIVE_BUFFER=y
CONFIG_XENO_OPT_NATIVE_HEAP=y
CONFIG_XENO_OPT_NATIVE_ALARM=y
CONFIG_XENO_OPT_NATIVE_MPS=y
# CONFIG_XENO_OPT_NATIVE_INTR is not set
CONFIG_XENO_OPT_DEBUG_NATIVE=y
CONFIG_XENO_SKIN_POSIX=y
CONFIG_XENO_OPT_POSIX_PERIOD=0
# CONFIG_XENO_OPT_POSIX_SHM is not set
# CONFIG_XENO_OPT_POSIX_INTR is not set
CONFIG_XENO_OPT_POSIX_SELECT=y
CONFIG_XENO_OPT_DEBUG_POSIX=y
# CONFIG_XENO_SKIN_PSOS is not set
# CONFIG_XENO_SKIN_UITRON is not set
# CONFIG_XENO_SKIN_VRTX is not set
# CONFIG_XENO_SKIN_VXWORKS is not set
# CONFIG_XENO_OPT_NOWARN_DEPRECATED is not set
CONFIG_XENO_SKIN_RTDM=y
CONFIG_XENO_OPT_RTDM_PERIOD=0
CONFIG_XENO_OPT_RTDM_FILDES=128
CONFIG_XENO_OPT_RTDM_SELECT=y
# CONFIG_XENO_OPT_DEBUG_RTDM is not set
CONFIG_XENO_OPT_DEBUG_RTDM_APPL=y
#
# Drivers
#
#
# Serial drivers
#
# CONFIG_XENO_DRIVERS_16550A is not set
#
# Testing drivers
#
CONFIG_XENO_DRIVERS_TIMERBENCH=y
# CONFIG_XENO_DRIVERS_KLATENCY is not set
# CONFIG_XENO_DRIVERS_IRQBENCH is not set
CONFIG_XENO_DRIVERS_SWITCHTEST=y
# CONFIG_XENO_DRIVERS_RTDMTEST is not set
#
# CAN drivers
#
# CONFIG_XENO_DRIVERS_CAN is not set
#
# ANALOGY drivers
#
# CONFIG_XENO_DRIVERS_ANALOGY is not set
#
# Real-time IPC drivers
#
# CONFIG_XENO_DRIVERS_RTIPC is not set
CONFIG_FREEZER=y
#
# System Type
#
CONFIG_MMU=y
# CONFIG_ARCH_AAEC2000 is not set
# CONFIG_ARCH_INTEGRATOR is not set
# CONFIG_ARCH_REALVIEW is not set
# CONFIG_ARCH_VERSATILE is not set
# CONFIG_ARCH_VEXPRESS is not set
CONFIG_ARCH_AT91=y
# CONFIG_ARCH_BCMRING is not set
# CONFIG_ARCH_CLPS711X is not set
# CONFIG_ARCH_CNS3XXX is not set
# CONFIG_ARCH_GEMINI is not set
# CONFIG_ARCH_EBSA110 is not set
# CONFIG_ARCH_EP93XX is not set
# CONFIG_ARCH_FOOTBRIDGE is not set
# CONFIG_ARCH_MXC is not set
# CONFIG_ARCH_STMP3XXX is not set
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_H720X is not set
# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
# CONFIG_ARCH_IXP23XX is not set
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_L7200 is not set
# CONFIG_ARCH_DOVE is not set
# CONFIG_ARCH_KIRKWOOD is not set
# CONFIG_ARCH_LOKI is not set
# CONFIG_ARCH_MV78XX0 is not set
# CONFIG_ARCH_ORION5X is not set
# CONFIG_ARCH_MMP is not set
# CONFIG_ARCH_KS8695 is not set
# CONFIG_ARCH_NS9XXX is not set
# CONFIG_ARCH_W90X900 is not set
# CONFIG_ARCH_NUC93X is not set
# CONFIG_ARCH_PNX4008 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_MSM is not set
# CONFIG_ARCH_SHMOBILE is not set
# CONFIG_ARCH_RPC is not set
# CONFIG_ARCH_SA1100 is not set
# CONFIG_ARCH_S3C2410 is not set
# CONFIG_ARCH_S3C64XX is not set
# CONFIG_ARCH_S5P6440 is not set
# CONFIG_ARCH_S5P6442 is not set
# CONFIG_ARCH_S5PC100 is not set
# CONFIG_ARCH_S5PV210 is not set
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_U300 is not set
# CONFIG_ARCH_U8500 is not set
# CONFIG_ARCH_NOMADIK is not set
# CONFIG_ARCH_DAVINCI is not set
# CONFIG_ARCH_OMAP is not set
# CONFIG_PLAT_SPEAR is not set
CONFIG_HAVE_AT91_USART3=y
CONFIG_HAVE_AT91_USART4=y
CONFIG_HAVE_AT91_USART5=y
#
# Atmel AT91 System-on-Chip
#
# CONFIG_ARCH_AT91RM9200 is not set
# CONFIG_ARCH_AT91SAM9260 is not set
# CONFIG_ARCH_AT91SAM9261 is not set
# CONFIG_ARCH_AT91SAM9G10 is not set
# CONFIG_ARCH_AT91SAM9263 is not set
# CONFIG_ARCH_AT91SAM9RL is not set
CONFIG_ARCH_AT91SAM9G20=y
# CONFIG_ARCH_AT91SAM9G45 is not set
# CONFIG_ARCH_AT91CAP9 is not set
# CONFIG_ARCH_AT572D940HF is not set
# CONFIG_ARCH_AT91X40 is not set
CONFIG_AT91_PMC_UNIT=y
#
# AT91SAM9G20 Board Type
#
# CONFIG_MACH_AT91SAM9G20EK is not set
# CONFIG_MACH_AT91SAM9G20EK_2MMC is not set
# CONFIG_MACH_CPU9G20 is not set
# CONFIG_MACH_PORTUXG20 is not set
# CONFIG_MACH_STAMP9G20 is not set
CONFIG_MACH_ELECTRUM_100=y
#
# Adeos I-pipe Options
#
CONFIG_IPIPE_AT91_TC=0
#
# AT91 Board Options
#
#
# AT91 Feature Selections
#
CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
# CONFIG_AT91_SLOW_CLOCK is not set
CONFIG_AT91_TIMER_HZ=1000
# CONFIG_AT91_EARLY_DBGU is not set
CONFIG_AT91_EARLY_USART0=y
# CONFIG_AT91_EARLY_USART1 is not set
# CONFIG_AT91_EARLY_USART2 is not set
# CONFIG_AT91_EARLY_USART3 is not set
# CONFIG_AT91_EARLY_USART4 is not set
# CONFIG_AT91_EARLY_USART5 is not set
CONFIG_IPIPE_ARM_KUSER_TSC=y
#
# Processor Type
#
CONFIG_CPU_ARM926T=y
CONFIG_CPU_32v5=y
CONFIG_CPU_ABRT_EV5TJ=y
CONFIG_CPU_PABRT_LEGACY=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_COPY_V4WB=y
CONFIG_CPU_TLB_V4WBI=y
CONFIG_CPU_CP15=y
CONFIG_CPU_CP15_MMU=y
#
# Processor Features
#
# CONFIG_ARM_THUMB is not set
# CONFIG_CPU_ICACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
CONFIG_CPU_CACHE_ROUND_ROBIN=y
CONFIG_ARM_L1_CACHE_SHIFT=5
CONFIG_ARM_FCSE=y
# CONFIG_ARM_FCSE_GUARANTEED is not set
CONFIG_ARM_FCSE_BEST_EFFORT=y
CONFIG_ARM_FCSE_PREEMPT_FLUSH=y
CONFIG_ARM_FCSE_MESSAGES=y
CONFIG_ARM_FCSE_DEBUG=y
#
# Bus support
#
# CONFIG_PCI_SYSCALL is not set
# CONFIG_ARCH_SUPPORTS_MSI is not set
# CONFIG_PCCARD is not set
#
# Kernel Features
#
# CONFIG_NO_HZ is not set
# CONFIG_HIGH_RES_TIMERS is not set
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_IPIPE=y
CONFIG_IPIPE_DOMAINS=4
CONFIG_IPIPE_DELAYED_ATOMICSW=y
# CONFIG_IPIPE_UNMASKED_CONTEXT_SWITCH is not set
CONFIG_HAVE_IPIPE_HOSTRT=y
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
CONFIG_HZ=1000
CONFIG_AEABI=y
CONFIG_OABI_COMPAT=y
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
# CONFIG_HIGHMEM is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=999999
# CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=0
CONFIG_VIRT_TO_BUS=y
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
# CONFIG_LEDS is not set
CONFIG_ALIGNMENT_TRAP=y
# CONFIG_UACCESS_WITH_MEMCPY is not set
#
# Boot options
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="mem=64M console=ttyS0,115200"
# CONFIG_CMDLINE_FORCE is not set
# CONFIG_XIP_KERNEL is not set
# CONFIG_KEXEC is not set
#
# CPU Power Management
#
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
#
# Floating point emulation
#
#
# At least one emulation must be selected
#
CONFIG_FPE_NWFPE=y
# CONFIG_FPE_NWFPE_XP is not set
# CONFIG_FPE_FASTFPE is not set
# CONFIG_VFP is not set
#
# Userspace binary formats
#
CONFIG_BINFMT_ELF=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
CONFIG_HAVE_AOUT=y
# CONFIG_BINFMT_AOUT is not set
# CONFIG_BINFMT_MISC is not set
#
# Power management options
#
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
CONFIG_PM_SLEEP=y
CONFIG_SUSPEND_NVS=y
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
CONFIG_APM_EMULATION=y
# CONFIG_PM_RUNTIME is not set
CONFIG_PM_OPS=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_PNP=y
# CONFIG_IP_PNP_DHCP is not set
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_LRO is not set
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IPV6 is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_RDS is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_L2TP is not set
# CONFIG_BRIDGE is not set
# CONFIG_NET_DSA is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_PHONET is not set
# CONFIG_IEEE802154 is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set
# CONFIG_WIRELESS is not set
# CONFIG_WIMAX is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
# CONFIG_CAIF is not set
#
# Device Drivers
#
#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
# CONFIG_DEVTMPFS is not set
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
# CONFIG_MTD is not set
# CONFIG_PARPORT is not set
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
#
# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
#
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_UB is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=8192
# CONFIG_BLK_DEV_XIP is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_MG_DISK is not set
CONFIG_MISC_DEVICES=y
# CONFIG_AD525X_DPOT is not set
CONFIG_ATMEL_TCLIB=y
# CONFIG_ICS932S401 is not set
# CONFIG_ATMEL_SSC is not set
# CONFIG_ENCLOSURE_SERVICES is not set
# CONFIG_ISL29003 is not set
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_DS1682 is not set
# CONFIG_TI_DAC7512 is not set
# CONFIG_C2PORT is not set
#
# EEPROM support
#
# CONFIG_EEPROM_AT24 is not set
# CONFIG_EEPROM_AT25 is not set
# CONFIG_EEPROM_LEGACY is not set
# CONFIG_EEPROM_MAX6875 is not set
# CONFIG_EEPROM_93CX6 is not set
# CONFIG_IWMC3200TOP is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set
#
# SCSI device support
#
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_VETH is not set
CONFIG_PHYLIB=y
#
# MII PHY device drivers
#
# CONFIG_MARVELL_PHY is not set
# CONFIG_DAVICOM_PHY is not set
# CONFIG_QSEMI_PHY is not set
# CONFIG_LXT_PHY is not set
# CONFIG_CICADA_PHY is not set
# CONFIG_VITESSE_PHY is not set
# CONFIG_SMSC_PHY is not set
# CONFIG_BROADCOM_PHY is not set
# CONFIG_ICPLUS_PHY is not set
# CONFIG_REALTEK_PHY is not set
# CONFIG_NATIONAL_PHY is not set
# CONFIG_STE10XP is not set
# CONFIG_LSI_ET1011C_PHY is not set
# CONFIG_MICREL_PHY is not set
# CONFIG_FIXED_PHY is not set
# CONFIG_MDIO_BITBANG is not set
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
CONFIG_MACB=y
# CONFIG_AX88796 is not set
# CONFIG_SMC91X is not set
# CONFIG_DM9000 is not set
# CONFIG_ENC28J60 is not set
# CONFIG_ETHOC is not set
# CONFIG_SMC911X is not set
# CONFIG_SMSC911X is not set
# CONFIG_DNET is not set
# CONFIG_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
# CONFIG_B44 is not set
# CONFIG_KS8842 is not set
# CONFIG_KS8851 is not set
# CONFIG_KS8851_MLL is not set
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
# CONFIG_WLAN is not set
#
# Enable WiMAX (Networking options) to see the WiMAX drivers
#
#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET is not set
# CONFIG_USB_IPHETH is not set
# CONFIG_WAN is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set
#
# Input device support
#
CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set
# CONFIG_INPUT_POLLDEV is not set
# CONFIG_INPUT_SPARSEKMAP is not set
#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=320
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
# CONFIG_INPUT_JOYDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
CONFIG_KEYBOARD_GPIO=y
# CONFIG_KEYBOARD_TCA6416 is not set
# CONFIG_KEYBOARD_MATRIX is not set
# CONFIG_KEYBOARD_MAX7359 is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_OPENCORES is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_SERPORT=y
# CONFIG_SERIO_RAW is not set
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_GAMEPORT is not set
#
# Character devices
#
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
CONFIG_DEVKMEM=y
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_N_GSM is not set
#
# Serial drivers
#
# CONFIG_SERIAL_8250 is not set
#
# Non-8250 serial port support
#
CONFIG_SERIAL_ATMEL=y
CONFIG_SERIAL_ATMEL_CONSOLE=y
CONFIG_SERIAL_ATMEL_PDC=y
# CONFIG_SERIAL_ATMEL_TTYAT is not set
# CONFIG_SERIAL_MAX3100 is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
# CONFIG_SERIAL_ALTERA_UART is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=16
# CONFIG_IPMI_HANDLER is not set
CONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
# CONFIG_R3964 is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_TCG_TPM is not set
# CONFIG_RAMOOPS is not set
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_COMPAT=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_HELPER_AUTO=y
#
# I2C Hardware Bus support
#
#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
# CONFIG_I2C_DESIGNWARE is not set
# CONFIG_I2C_GPIO is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PCA_PLATFORM is not set
# CONFIG_I2C_SIMTEC is not set
# CONFIG_I2C_XILINX is not set
#
# External I2C/SMBus adapter drivers
#
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_TAOS_EVM is not set
# CONFIG_I2C_TINY_USB is not set
#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_STUB is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
CONFIG_SPI=y
# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_MASTER=y
#
# SPI Master Controller Drivers
#
CONFIG_SPI_ATMEL=y
# CONFIG_SPI_BITBANG is not set
# CONFIG_SPI_GPIO is not set
# CONFIG_SPI_XILINX is not set
# CONFIG_SPI_DESIGNWARE is not set
#
# SPI Protocol Masters
#
CONFIG_SPI_SPIDEV=y
# CONFIG_SPI_TLE62X0 is not set
#
# PPS support
#
# CONFIG_PPS is not set
CONFIG_ARCH_REQUIRE_GPIOLIB=y
CONFIG_GPIOLIB=y
# CONFIG_DEBUG_GPIO is not set
# CONFIG_GPIO_SYSFS is not set
#
# Memory mapped GPIO expanders:
#
# CONFIG_GPIO_IT8761E is not set
#
# I2C GPIO expanders:
#
# CONFIG_GPIO_MAX7300 is not set
# CONFIG_GPIO_MAX732X is not set
# CONFIG_GPIO_PCA953X is not set
# CONFIG_GPIO_PCF857X is not set
# CONFIG_GPIO_ADP5588 is not set
#
# PCI GPIO expanders:
#
#
# SPI GPIO expanders:
#
# CONFIG_GPIO_MAX7301 is not set
# CONFIG_GPIO_MCP23S08 is not set
# CONFIG_GPIO_MC33880 is not set
#
# AC97 GPIO expanders:
#
#
# MODULbus GPIO expanders:
#
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
# CONFIG_THERMAL is not set
# CONFIG_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y
#
# Sonics Silicon Backplane
#
CONFIG_SSB=y
CONFIG_SSB_SDIOHOST_POSSIBLE=y
# CONFIG_SSB_SDIOHOST is not set
# CONFIG_SSB_DEBUG is not set
CONFIG_MFD_SUPPORT=y
# CONFIG_MFD_CORE is not set
# CONFIG_MFD_88PM860X is not set
# CONFIG_MFD_SM501 is not set
# CONFIG_MFD_ASIC3 is not set
# CONFIG_HTC_EGPIO is not set
# CONFIG_HTC_PASIC3 is not set
# CONFIG_HTC_I2CPLD is not set
# CONFIG_TPS65010 is not set
# CONFIG_TPS6507X is not set
# CONFIG_TWL4030_CORE is not set
# CONFIG_MFD_TC35892 is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_MFD_T7L66XB is not set
# CONFIG_MFD_TC6387XB is not set
# CONFIG_MFD_TC6393XB is not set
# CONFIG_PMIC_DA903X is not set
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_MFD_MAX8925 is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM831X is not set
# CONFIG_MFD_WM8350_I2C is not set
# CONFIG_MFD_WM8994 is not set
# CONFIG_MFD_PCF50633 is not set
# CONFIG_MFD_MC13783 is not set
# CONFIG_ABX500_CORE is not set
# CONFIG_EZX_PCAP is not set
# CONFIG_AB8500_CORE is not set
# CONFIG_REGULATOR is not set
# CONFIG_MEDIA_SUPPORT is not set
#
# Graphics support
#
# CONFIG_VGASTATE is not set
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
# CONFIG_FB is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set
#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
# CONFIG_SOUND is not set
# CONFIG_HID_SUPPORT is not set
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
# CONFIG_USB_ARCH_HAS_EHCI is not set
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set
# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_DEVICE_CLASS is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_MON is not set
# CONFIG_USB_WUSB is not set
# CONFIG_USB_WUSB_CBAF is not set
#
# USB Host Controller Drivers
#
# CONFIG_USB_C67X00_HCD is not set
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_ISP1760_HCD is not set
# CONFIG_USB_ISP1362_HCD is not set
CONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_HCD_SSB is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set
# CONFIG_USB_HWA_HCD is not set
# CONFIG_USB_MUSB_HDRC is not set
# CONFIG_USB_GADGET_MUSB_HDRC is not set
#
# USB Device Class drivers
#
CONFIG_USB_ACM=m
# CONFIG_USB_PRINTER is not set
# CONFIG_USB_WDM is not set
# CONFIG_USB_TMC is not set
#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
#
#
# also be needed; see USB_STORAGE Help for more info
#
# CONFIG_USB_LIBUSUAL is not set
#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
#
# USB port drivers
#
# CONFIG_USB_SERIAL is not set
#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_SEVSEG is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not set
# CONFIG_USB_ISIGHTFW is not set
CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG is not set
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_VBUS_DRAW=2
CONFIG_USB_GADGET_SELECTED=y
CONFIG_USB_GADGET_AT91=y
CONFIG_USB_AT91=y
# CONFIG_USB_GADGET_ATMEL_USBA is not set
# CONFIG_USB_GADGET_FSL_USB2 is not set
# CONFIG_USB_GADGET_LH7A40X is not set
# CONFIG_USB_GADGET_OMAP is not set
# CONFIG_USB_GADGET_PXA25X is not set
# CONFIG_USB_GADGET_R8A66597 is not set
# CONFIG_USB_GADGET_PXA27X is not set
# CONFIG_USB_GADGET_S3C_HSOTG is not set
# CONFIG_USB_GADGET_IMX is not set
# CONFIG_USB_GADGET_S3C2410 is not set
# CONFIG_USB_GADGET_M66592 is not set
# CONFIG_USB_GADGET_AMD5536UDC is not set
# CONFIG_USB_GADGET_FSL_QE is not set
# CONFIG_USB_GADGET_CI13XXX is not set
# CONFIG_USB_GADGET_NET2280 is not set
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_LANGWELL is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_DUALSPEED is not set
CONFIG_USB_ZERO=m
# CONFIG_USB_AUDIO is not set
CONFIG_USB_ETH=m
CONFIG_USB_ETH_RNDIS=y
# CONFIG_USB_ETH_EEM is not set
CONFIG_USB_GADGETFS=m
# CONFIG_USB_FUNCTIONFS is not set
CONFIG_USB_FILE_STORAGE=m
# CONFIG_USB_FILE_STORAGE_TEST is not set
# CONFIG_USB_MASS_STORAGE is not set
CONFIG_USB_G_SERIAL=m
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_PRINTER is not set
# CONFIG_USB_CDC_COMPOSITE is not set
# CONFIG_USB_G_NOKIA is not set
# CONFIG_USB_G_MULTI is not set
# CONFIG_USB_G_HID is not set
# CONFIG_USB_G_WEBCAM is not set
#
# OTG and related infrastructure
#
# CONFIG_USB_GPIO_VBUS is not set
# CONFIG_USB_ULPI is not set
# CONFIG_NOP_USB_XCEIV is not set
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_UNSAFE_RESUME is not set
#
# MMC/SD/SDIO Card Drivers
#
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set
CONFIG_MMC_TEST=y
#
# MMC/SD/SDIO Host Controller Drivers
#
# CONFIG_MMC_SDHCI is not set
CONFIG_MMC_AT91=y
# CONFIG_MMC_ATMELMCI is not set
# CONFIG_MMC_SPI is not set
# CONFIG_MEMSTICK is not set
# CONFIG_NEW_LEDS is not set
# CONFIG_ACCESSIBILITY is not set
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set
#
# RTC interfaces
#
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
# CONFIG_RTC_DRV_TEST is not set
#
# I2C RTC drivers
#
# CONFIG_RTC_DRV_DS1307 is not set
# CONFIG_RTC_DRV_DS1374 is not set
# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_MAX6900 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
# CONFIG_RTC_DRV_ISL1208 is not set
# CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_PCF8563 is not set
# CONFIG_RTC_DRV_PCF8583 is not set
# CONFIG_RTC_DRV_M41T80 is not set
# CONFIG_RTC_DRV_BQ32K is not set
# CONFIG_RTC_DRV_S35390A is not set
# CONFIG_RTC_DRV_FM3130 is not set
# CONFIG_RTC_DRV_RX8581 is not set
# CONFIG_RTC_DRV_RX8025 is not set
#
# SPI RTC drivers
#
# CONFIG_RTC_DRV_M41T94 is not set
# CONFIG_RTC_DRV_DS1305 is not set
# CONFIG_RTC_DRV_DS1390 is not set
# CONFIG_RTC_DRV_MAX6902 is not set
# CONFIG_RTC_DRV_R9701 is not set
# CONFIG_RTC_DRV_RS5C348 is not set
# CONFIG_RTC_DRV_DS3234 is not set
# CONFIG_RTC_DRV_PCF2123 is not set
#
# Platform RTC drivers
#
# CONFIG_RTC_DRV_CMOS is not set
# CONFIG_RTC_DRV_DS1286 is not set
# CONFIG_RTC_DRV_DS1511 is not set
# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_STK17TA8 is not set
# CONFIG_RTC_DRV_M48T86 is not set
# CONFIG_RTC_DRV_M48T35 is not set
# CONFIG_RTC_DRV_M48T59 is not set
# CONFIG_RTC_DRV_MSM6242 is not set
# CONFIG_RTC_DRV_BQ4802 is not set
# CONFIG_RTC_DRV_RP5C01 is not set
# CONFIG_RTC_DRV_V3020 is not set
#
# on-CPU RTC drivers
#
CONFIG_RTC_DRV_AT91SAM9=y
CONFIG_RTC_DRV_AT91SAM9_RTT=0
CONFIG_RTC_DRV_AT91SAM9_GPBR=0
# CONFIG_DMADEVICES is not set
# CONFIG_AUXDISPLAY is not set
# CONFIG_UIO is not set
# CONFIG_STAGING is not set
#
# File systems
#
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT23=y
# CONFIG_EXT4_FS_XATTR is not set
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_BTRFS_FS is not set
# CONFIG_NILFS2_FS is not set
CONFIG_FILE_LOCKING=y
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set
CONFIG_GENERIC_ACL=y
#
# Caches
#
# CONFIG_FSCACHE is not set
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLB_PAGE is not set
# CONFIG_CONFIGFS_FS is not set
# CONFIG_MISC_FILESYSTEMS is not set
# CONFIG_NETWORK_FILESYSTEMS is not set
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
CONFIG_NLS_CODEPAGE_850=y
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
CONFIG_NLS_ISO8859_15=y
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
CONFIG_NLS_UTF8=y
# CONFIG_DLM is not set
#
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
# CONFIG_ENABLE_WARN_DEPRECATED is not set
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=1024
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_STRIP_ASM_SYMS is not set
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
CONFIG_IPIPE_DEBUG=y
CONFIG_IPIPE_DEBUG_CONTEXT=y
CONFIG_IPIPE_DEBUG_INTERNAL=y
# CONFIG_IPIPE_TRACE is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
CONFIG_DETECT_HUNG_TASK=y
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
CONFIG_SCHED_DEBUG=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_LOCK_ALLOC is not set
# CONFIG_PROVE_LOCKING is not set
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
CONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set
# CONFIG_DEBUG_CREDENTIALS is not set
CONFIG_FRAME_POINTER=y
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set
# CONFIG_SYSCTL_SYSCALL_CHECK is not set
# CONFIG_PAGE_POISONING is not set
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_TRACING_SUPPORT=y
# CONFIG_FTRACE is not set
# CONFIG_ATOMIC64_SELFTEST is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_ARM_UNWIND is not set
CONFIG_DEBUG_USER=y
CONFIG_DEBUG_ERRORS=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_LL is not set
# CONFIG_OC_ETM is not set
#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITYFS is not set
# CONFIG_DEFAULT_SECURITY_SELINUX is not set
# CONFIG_DEFAULT_SECURITY_SMACK is not set
# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
CONFIG_DEFAULT_SECURITY_DAC=y
CONFIG_DEFAULT_SECURITY=""
# CONFIG_CRYPTO is not set
# CONFIG_BINARY_PRINTF is not set
#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_GENERIC_FIND_LAST_BIT=y
# CONFIG_CRC_CCITT is not set
CONFIG_CRC16=y
# CONFIG_CRC_T10DIF is not set
CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
# CONFIG_LIBCRC32C is not set
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_NLATTR=y
CONFIG_GENERIC_ATOMIC64=y
[-- Attachment #3: messages-with-rc.local-content --]
[-- Type: text/plain, Size: 17285 bytes --]
Uncompressing Linux... done, booting the kernel.
Linux version 2.6.35.9-xenomai (user@hive64) (gcc version 4.3.2 (Debian 4.3.2-1.1) ) #6 Sun Nov 6 13:22:15 CST 2011
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00057177
CPU: VIVT data cache, VIVT instruction cache
Machine: Micromint Electrum 100
Memory policy: ECC disabled, Data cache writeback
Clocks: CPU 396 MHz, master 132 MHz, main 18.432 MHz
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait lpj=98304 noswap
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 61768k/61768k available, 3768k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xffc00000 - 0xffe00000 ( 2 MB)
vmalloc : 0xc4800000 - 0xfee00000 ( 934 MB)
lowmem : 0xc0000000 - 0xc4000000 ( 64 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.init : 0xc0008000 - 0xc0021000 ( 100 kB)
.text : 0xc0021000 - 0xc02de000 (2804 kB)
.data : 0xc02de000 - 0xc02f7f80 ( 104 kB)
Hierarchical RCU implementation.
RCU-based detection of stalled CPUs is disabled.
Verbose stalled-CPUs detection is disabled.
NR_IRQS:192
AT91: 96 gpio irqs in 3 banks
AT91 I-pipe timer: div: 128, freq: 1.032000 MHz, wrap: 63.503875 ms
I-pipe, 1.032 MHz clocksource
I-pipe 1.18-03: pipeline enabled.
Console: colour dummy device 80x30
Calibrating delay loop (skipped) preset value.. 196.60 BogoMIPS (lpj=98304)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
AT91: Power Management
AT91: Starting after user reset
bio: create slab <bio-0> at 0
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Switching to clocksource ipipe_tsc
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
NetWinder Floating Point Emulator V0.97 (double precision)
I-pipe: Domain Xenomai registered.
Xenomai: hal/arm started.
Xenomai: scheduling class idle registered.
Xenomai: scheduling class rt registered.
Xenomai: real-time nucleus v2.6.0 (Movin' On) loaded.
Xenomai: debug mode enabled.
Xenomai: starting native API services.
Xenomai: starting POSIX services.
Xenomai: starting RTDM services.
msgmni has been set to 120
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
io scheduler noop registered (default)
atmel_usart.0: ttyS0 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL
console [ttyS0] enabled
atmel_usart.1: ttyS1 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL
brd: module loaded
loop: module loaded
atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffc8000 (irq 12)
atmel_spi atmel_spi.1: Atmel SPI Controller at 0xfffcc000 (irq 13)
MACB_mii_bus: probed
eth0: Atmel MACB at 0xfffc4000 irq 21 (00:21:a3:00:02:89)
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ffffffff:00, irq=-1)
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
at91_ohci at91_ohci: AT91 OHCI
at91_ohci at91_ohci: new USB bus registered, assigned bus number 1
at91_ohci at91_ohci: irq 20, io mem 0x00500000
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
udc: at91_udc version 3 May 2006
mice: PS/2 mouse device common for all mice
rtc-at91sam9 at91_rtt.0: rtc core: registered at91_rtt as rtc0
i2c /dev entries driver
cpuidle: using governor ladder
TCP cubic registered
NET: Registered protocol family 17
rtc-at91sam9 at91_rtt.0: setting system clock to 2011-11-06 14:36:58 UTC (1320590218)
Waiting for root device /dev/mmcblk0p2...
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new SD card at address 3375
mmcblk0: mmc0:3375 SD02G 1.83 GiB
mmcblk0: p1 p2 p3 p4
EXT4-fs (mmcblk0p2): warning: maximal mount count reached, running e2fsck is recommended
EXT4-fs (mmcblk0p2): recovery complete
EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext2 filesystem) on device 179:2.
Freeing init memory: 100K
INIT: version 2.88 booting
INIT: Entering runlevel: 2
Unable to handle kernel paging request at virtual address c4000000
fcse pid: 5, 0x0a000000
pgd = c3da0000
[c4000000] *pgd=00000000
Internal error: Oops: 805 [#1]
last sysfs file:
Modules linked in:
CPU: 0 Not tainted (2.6.35.9-xenomai #6)
PC is at __memzero+0x24/0x80
LR is at 0x0
pc : [<c0170944>] lr : [<00000000>] psr: 20000013
sp : c3da9e68 ip : 00000000 fp : c3da9e8c
r10: 00000000 r9 : c3da8000 r8 : 7ffff000
r7 : 00028248 r6 : c3da9edc r5 : c3da9e94 r4 : 00000000
r3 : 00000000 r2 : 00000000 r1 : 7fda8e60 r0 : c3fffff4
Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 0005717f Table: 23da0000 DAC: 00000015
Process rc.local (pid: 435, stack limit = 0xc3da8270)
Stack: (0xc3da9e68 to 0xc3daa000)
9e60: c024f3c4 7ffde260 7ffff000 c0084de0 c0177134 c02ebd50
9e80: c3da9ed4 c3da9e90 c0084e18 c0084d94 c3da9eb4 00000000 00000000 00000000
9ea0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9ec0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9ee0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9f00: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9f20: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9f40: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9f60: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9f80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9fa0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9fe0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Backtrace:
[<c0084d84>] (xnvfile_get_blob+0x0/0x70) from [<c0084e18>] (xnvfile_get_integer+0x24/0x8c)
r4:c02ebd50
Backtrace aborted due to bad frame pointer <c3da9ed4>
Code: e52de004 e1a0c002 e1a0e002 e2511040 (a8a0500c)
---[ end trace bf6b92b46f402afe ]---
Unable to handle kernel NULL pointer dereference at virtual address 00000000
fcse pid: 0, 0x00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 17 [#2]
last sysfs file:
Modules linked in:
CPU: 0 Tainted: G D (2.6.35.9-xenomai #6)
PC is at unlink_anon_vmas+0x1c/0xbc
LR is at free_pgtables+0x60/0xac
pc : [<c00d0d54>] lr : [<c00c9e20>] psr: 80000013
sp : c3da9be0 ip : c3da9c10 fp : c3da9c0c
r10: 00001000 r9 : c02e2354 r8 : 00100100
r7 : 00800000 r6 : c3dc4f98 r5 : c3dc4fd0 r4 : 00000000
r3 : 00a1d000 r2 : 00000000 r1 : 00000000 r0 : c3dc4f98
Flags: Nzcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 0005717f Table: 23da0000 DAC: 00000015
Process rc.local (pid: 435, stack limit = 0xc3da8270)
Stack: (0xc3da9be0 to 0xc3daa000)
9be0: c3da9bfc 00000000 c3da46a8 c3dc4f98 00800000 00000000 c02e2354 00001000
9c00: c3da9c44 c3da9c10 c00c9e20 c00d0d48 00800000 00000000 20000013 00000120
9c20: 00000000 c3d89ba0 c3da4910 00000000 20000013 c02aa741 c3da9c7c c3da9c48
9c40: c00cbbe4 c00c9dd0 c3da9c50 00000000 00000024 c02e2354 c006ce1c c3d89ba0
9c60: c3d89ba0 c3d1c3a0 c3d89bd4 00000805 c3da9c94 c3da9c80 c003a79c c00cbadc
9c80: c00560d4 00000000 c3da9cbc c3da9c98 c003e750 c003a75c c3d1c3a0 c3d1c3a0
9ca0: 0000000b c3d1c3a0 c3d1c3a0 c3da9e20 c3da9cdc c3da9cc0 c003ff40 c003e644
9cc0: c3da9cdc 00000001 c003c6b0 c003cc98 c3da9d0c c3da9ce0 c0025f2c c003fdd4
9ce0: c3da8270 0000000b c4000000 c3da9e20 c3d89ba0 00000805 00000000 00000000
9d00: c3da9d34 c3da9d10 c00291b4 c0025d94 c3da9d34 23da0000 c3da9e20 c4000000
9d20: 00000805 c4000000 c3da9d4c c3da9d38 c00294a8 c0029154 c3da9d7c c3da9d48
9d40: c3da9d6c c3da9d50 c0029690 c0029458 c02e20e0 c3da9e54 00000805 c3da9e20
9d60: c3da9e1c c3da9d70 c00212e8 c0029584 c3da9d9c c3da9d80 c006c9b0 c006c45c
9d80: c02eaaa8 c0305880 c02eb9d8 c0303b60 c3da9dbc c3da9da0 c006cc84 c006c924
9da0: c0305880 00000011 00000011 00028248 c3da9dcc c3da9dc0 c006d3d0 c006cbf0
9dc0: c3da9e04 c3da9dd0 c0027704 c006d3b0 ffffff51 00000000 c3da8000 c3da9e20
9de0: fefff000 00000011 00028248 7ffff000 c3da8000 00000000 c3da9e1c ffffffff
9e00: c3da9e54 c3da9edc 00028248 7ffff000 c3da9e8c c3da9e20 c0021b7c c00212bc
9e20: c3fffff4 7fda8e60 00000000 00000000 00000000 c3da9e94 c3da9edc 00028248
9e40: 7ffff000 c3da8000 00000000 c3da9e8c 00000000 c3da9e68 00000000 c0170944
9e60: 20000013 ffffffff c024f3c4 7ffde260 7ffff000 c0084de0 c0177134 c02ebd50
9e80: c3da9ed4 c3da9e90 c0084e18 c0084d94 c3da9eb4 00000000 00000000 00000000
9ea0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9ec0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9ee0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9f00: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9f20: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9f40: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9f60: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9f80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9fa0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9fe0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Backtrace:
[<c00d0d38>] (unlink_anon_vmas+0x0/0xbc) from [<c00c9e20>] (free_pgtables+0x60/0xac)
[<c00c9dc0>] (free_pgtables+0x0/0xac) from [<c00cbbe4>] (exit_mmap+0x118/0x18c)
[<c00cbacc>] (exit_mmap+0x0/0x18c) from [<c003a79c>] (mmput+0x50/0x13c)
r8:00000805 r7:c3d89bd4 r6:c3d1c3a0 r5:c3d89ba0 r4:c3d89ba0
[<c003a74c>] (mmput+0x0/0x13c) from [<c003e750>] (exit_mm+0x11c/0x128)
r4:00000000
[<c003e634>] (exit_mm+0x0/0x128) from [<c003ff40>] (do_exit+0x17c/0x624)
r7:c3da9e20 r6:c3d1c3a0 r5:c3d1c3a0 r4:0000000b
[<c003fdc4>] (do_exit+0x0/0x624) from [<c0025f2c>] (die+0x1a8/0x1dc)
[<c0025d84>] (die+0x0/0x1dc) from [<c00291b4>] (__do_kernel_fault+0x70/0x90)
[<c0029144>] (__do_kernel_fault+0x0/0x90) from [<c00294a8>] (do_bad_area+0x60/0x6c)
r8:c4000000 r7:00000805 r6:c4000000 r5:c3da9e20 r4:23da0000
[<c0029448>] (do_bad_area+0x0/0x6c) from [<c0029690>] (do_translation_fault+0x11c/0x134)
[<c0029574>] (do_translation_fault+0x0/0x134) from [<c00212e8>] (do_DataAbort+0x3c/0x128)
r7:c3da9e20 r6:00000805 r5:c3da9e54 r4:c02e20e0
[<c00212ac>] (do_DataAbort+0x0/0x128) from [<c0021b7c>] (__dabt_svc+0x5c/0x80)
Exception stack(0xc3da9e20 to 0xc3da9e68)
9e20: c3fffff4 7fda8e60 00000000 00000000 00000000 c3da9e94 c3da9edc 00028248
9e40: 7ffff000 c3da8000 00000000 c3da9e8c 00000000 c3da9e68 00000000 c0170944
9e60: 20000013 ffffffff
r8:7ffff000 r7:00028248 r6:c3da9edc r5:c3da9e54 r4:ffffffff
[<c0084d84>] (xnvfile_get_blob+0x0/0x70) from [<c0084e18>] (xnvfile_get_integer+0x24/0x8c)
r4:c02ebd50
Backtrace aborted due to bad frame pointer <c3da9ed4>
Code: e24dd004 e1a05000 e5b54038 e59f808c (e4143008)
---[ end trace bf6b92b46f402aff ]---
Fixing recursive fault but reboot is needed!
Unable to handle kernel NULL pointer dereference at virtual address 00000000
fcse pid: 0, 0x00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 80000005 [#3]
last sysfs file:
Modules linked in:
CPU: 0 Tainted: G D (2.6.35.9-xenomai #6)
PC is at 0x0
LR is at __rcu_process_callbacks+0x328/0x47c
pc : [<00000000>] lr : [<c006b260>] psr: a0000013
sp : c02dfea0 ip : c0303b60 fp : c02dfecc
r10: c3c1a758 r9 : c02ea888 r8 : c02ea9e8
r7 : c3dc9e40 r6 : 00000005 r5 : 00000000 r4 : c02ea9d0
r3 : 0000000a r2 : 00000000 r1 : 00000000 r0 : c3dc9e40
Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 0005717f Table: 23da0000 DAC: 00000017
Process swapper (pid: 0, stack limit = 0xc02de270)
Stack: (0xc02dfea0 to 0xc02e0000)
fea0: c01e077c 00000100 c02de000 00000024 00000001 00000009 c03011a8 0000000a
fec0: c02dfedc c02dfed0 c006b3cc c006af48 c02dff14 c02dfee0 c00420d4 c006b3c4
fee0: c02dff0c c02e6b88 00000011 00000011 00000000 00000000 00000002 c0303b60
ff00: c02eaabc c0303b64 c02dff24 c02dff18 c00421cc c0042058 c02dff3c c02dff28
ff20: c0021078 c0042190 00000011 00000014 c02dff4c c02dff40 c0027b6c c0021010
ff40: c02dff84 c02dff50 c006c5ac c0027b68 c0303b60 c02eaac0 00000001 c02de000
ff60: c02eaab8 c02e1c18 c02f8270 2001e8e8 41069265 2001e8b4 c02dff94 c02dff88
ff80: c006ce3c c006c45c c02dffb4 c02dff98 c0023790 c006ce0c c0316fd0 c02f8010
ffa0: c001fc00 c02e1c0c c02dffc4 c02dffb8 c024b2d0 c002374c c02dfff4 c02dffc8
ffc0: c0008a08 c024b280 c0008528 00000000 00000000 c001fc00 00000000 00057175
ffe0: c02f8298 c0020004 00000000 c02dfff8 20008034 c00087d4 00000000 00000000
Backtrace:
[<c006af38>] (__rcu_process_callbacks+0x0/0x47c) from [<c006b3cc>] (rcu_process_callbacks+0x18/0x38)
[<c006b3b4>] (rcu_process_callbacks+0x0/0x38) from [<c00420d4>] (__do_softirq+0x8c/0x138)
[<c0042048>] (__do_softirq+0x0/0x138) from [<c00421cc>] (irq_exit+0x4c/0x58)
[<c0042180>] (irq_exit+0x0/0x58) from [<c0021078>] (asm_do_IRQ+0x78/0x98)
[<c0021000>] (asm_do_IRQ+0x0/0x98) from [<c0027b6c>] (__ipipe_do_IRQ+0x14/0x1c)
Exception stack(0xc02dff40 to 0xc02dff88)
ff40: c02dff84 c02dff50 c006c5ac c0027b68 c0303b60 c02eaac0 00000001 c02de000
ff60: c02eaab8 c02e1c18 c02f8270 2001e8e8 41069265 2001e8b4 c02dff94 c02dff88
ff80: c006ce3c c006c45c
r5:00000014 r4:00000011
[<c0027b58>] (__ipipe_do_IRQ+0x0/0x1c) from [<c006c5ac>] (__ipipe_sync_stage+0x160/0x1a8)
[<c006c44c>] (__ipipe_sync_stage+0x0/0x1a8) from [<c006ce3c>] (__ipipe_unstall_root+0x40/0x58)
[<c006cdfc>] (__ipipe_unstall_root+0x0/0x58) from [<c0023790>] (cpu_idle+0x54/0xa0)
[<c002373c>] (cpu_idle+0x0/0xa0) from [<c024b2d0>] (rest_init+0x60/0x78)
r7:c02e1c0c r6:c001fc00 r5:c02f8010 r4:c0316fd0
[<c024b270>] (rest_init+0x0/0x78) from [<c0008a08>] (start_kernel+0x244/0x29c)
[<c00087c4>] (start_kernel+0x0/0x29c) from [<20008034>] (0x20008034)
r6:c0020004 r5:c02f8298 r4:00057175
Code: bad PC value
---[ end trace bf6b92b46f402b00 ]---
Kernel panic - not syncing: Fatal exception in interrupt
Backtrace:
[<c0025a14>] (dump_backtrace+0x0/0x10c) from [<c024c924>] (dump_stack+0x18/0x1c)
r7:c02dfe58 r6:c02de000 r5:c02e0f90 r4:c02f8840
[<c024c90c>] (dump_stack+0x0/0x1c) from [<c024c97c>] (panic+0x54/0xd8)
[<c024c928>] (panic+0x0/0xd8) from [<c0025f18>] (die+0x194/0x1dc)
r3:00000100 r2:00000000 r1:00000000 r0:c02aa0b4
[<c0025d84>] (die+0x0/0x1dc) from [<c00291b4>] (__do_kernel_fault+0x70/0x90)
[<c0029144>] (__do_kernel_fault+0x0/0x90) from [<c0029420>] (do_page_fault+0x24c/0x274)
r8:00000000 r7:80000005 r6:00000000 r5:c02e0f90 r4:c02e1ee0
[<c00291d4>] (do_page_fault+0x0/0x274) from [<c0029598>] (do_translation_fault+0x24/0x134)
[<c0029574>] (do_translation_fault+0x0/0x134) from [<c002124c>] (do_PrefetchAbort+0x3c/0x9c)
r7:c02dfe58 r6:00000005 r5:c02dfe8c r4:c02e1ee0
[<c0021210>] (do_PrefetchAbort+0x0/0x9c) from [<c0021d10>] (__pabt_svc+0x50/0x80)
Exception stack(0xc02dfe58 to 0xc02dfea0)
fe40: c3dc9e40 00000000
fe60: 00000000 0000000a c02ea9d0 00000000 00000005 c3dc9e40 c02ea9e8 c02ea888
fe80: c3c1a758 c02dfecc c0303b60 c02dfea0 c006b260 00000000 a0000013 ffffffff
r8:c02ea9e8 r7:c3dc9e40 r6:00000005 r5:c02dfe8c r4:ffffffff
[<c006af38>] (__rcu_process_callbacks+0x0/0x47c) from [<c006b3cc>] (rcu_process_callbacks+0x18/0x38)
[<c006b3b4>] (rcu_process_callbacks+0x0/0x38) from [<c00420d4>] (__do_softirq+0x8c/0x138)
[<c0042048>] (__do_softirq+0x0/0x138) from [<c00421cc>] (irq_exit+0x4c/0x58)
[<c0042180>] (irq_exit+0x0/0x58) from [<c0021078>] (asm_do_IRQ+0x78/0x98)
[<c0021000>] (asm_do_IRQ+0x0/0x98) from [<c0027b6c>] (__ipipe_do_IRQ+0x14/0x1c)
Exception stack(0xc02dff40 to 0xc02dff88)
ff40: c02dff84 c02dff50 c006c5ac c0027b68 c0303b60 c02eaac0 00000001 c02de000
ff60: c02eaab8 c02e1c18 c02f8270 2001e8e8 41069265 2001e8b4 c02dff94 c02dff88
ff80: c006ce3c c006c45c
r5:00000014 r4:00000011
[<c0027b58>] (__ipipe_do_IRQ+0x0/0x1c) from [<c006c5ac>] (__ipipe_sync_stage+0x160/0x1a8)
[<c006c44c>] (__ipipe_sync_stage+0x0/0x1a8) from [<c006ce3c>] (__ipipe_unstall_root+0x40/0x58)
[<c006cdfc>] (__ipipe_unstall_root+0x0/0x58) from [<c0023790>] (cpu_idle+0x54/0xa0)
[<c002373c>] (cpu_idle+0x0/0xa0) from [<c024b2d0>] (rest_init+0x60/0x78)
r7:c02e1c0c r6:c001fc00 r5:c02f8010 r4:c0316fd0
[<c024b270>] (rest_init+0x0/0x78) from [<c0008a08>] (start_kernel+0x244/0x29c)
[<c00087c4>] (start_kernel+0x0/0x29c) from [<20008034>] (0x20008034)
r6:c0020004 r5:c02f8298 r4:0005717
^ permalink raw reply
* [U-Boot] [PATCH 1/2] Add SLRE - Super Light Regular Expression library
From: Wolfgang Denk @ 2011-11-06 19:55 UTC (permalink / raw)
To: u-boot
In-Reply-To: <1320609172-3157-1-git-send-email-wd@denx.de>
Downloaded from http://slre.sourceforge.net/
and adapted for U-Boot environment.
Used to implement regex operations on environment variables.
Code size is ~ 3.5 KiB on PPC.
Signed-off-by: Wolfgang Denk <wd@denx.de>
---
Note: This patch was generated on top of my ``env: fix "env ask"
command'' patch. This should be applied before.
include/slre.h | 100 ++++++++
lib/slre.c | 709 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 809 insertions(+), 0 deletions(-)
create mode 100644 include/slre.h
create mode 100644 lib/slre.c
diff --git a/include/slre.h b/include/slre.h
new file mode 100644
index 0000000..4b41a4b
--- /dev/null
+++ b/include/slre.h
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2004-2005 Sergey Lyubka <valenok@gmail.com>
+ * All rights reserved
+ *
+ * "THE BEER-WARE LICENSE" (Revision 42):
+ * Sergey Lyubka wrote this file. As long as you retain this notice you
+ * can do whatever you want with this stuff. If we meet some day, and you think
+ * this stuff is worth it, you can buy me a beer in return.
+ */
+
+/*
+ * Downloaded Sat Nov 5 17:42:08 CET 2011 at
+ * http://slre.sourceforge.net/1.0/slre.h
+ */
+
+/*
+ * This is a regular expression library that implements a subset of Perl RE.
+ * Please refer to http://slre.sourceforge.net for detailed description.
+ *
+ * Usage example (parsing HTTP request):
+ *
+ * struct slre slre;
+ * struct cap captures[4 + 1]; // Number of braket pairs + 1
+ * ...
+ *
+ * slre_compile(&slre,"^(GET|POST) (\S+) HTTP/(\S+?)\r\n");
+ *
+ * if (slre_match(&slre, buf, len, captures)) {
+ * printf("Request line length: %d\n", captures[0].len);
+ * printf("Method: %.*s\n", captures[1].len, captures[1].ptr);
+ * printf("URI: %.*s\n", captures[2].len, captures[2].ptr);
+ * }
+ *
+ * Supported syntax:
+ * ^ Match beginning of a buffer
+ * $ Match end of a buffer
+ * () Grouping and substring capturing
+ * [...] Match any character from set
+ * [^...] Match any character but ones from set
+ * \s Match whitespace
+ * \S Match non-whitespace
+ * \d Match decimal digit
+ * \r Match carriage return
+ * \n Match newline
+ * + Match one or more times (greedy)
+ * +? Match one or more times (non-greedy)
+ * * Match zero or more times (greedy)
+ * *? Match zero or more times (non-greedy)
+ * ? Match zero or once
+ * \xDD Match byte with hex value 0xDD
+ * \meta Match one of the meta character: ^$().[*+?\
+ */
+
+#ifndef SLRE_HEADER_DEFINED
+#define SLRE_HEADER_DEFINED
+
+/*
+ * Compiled regular expression
+ */
+struct slre {
+ unsigned char code[256];
+ unsigned char data[256];
+ int code_size;
+ int data_size;
+ int num_caps; /* Number of bracket pairs */
+ int anchored; /* Must match from string start */
+ const char *err_str; /* Error string */
+};
+
+/*
+ * Captured substring
+ */
+struct cap {
+ const char *ptr; /* Pointer to the substring */
+ int len; /* Substring length */
+};
+
+/*
+ * Compile regular expression. If success, 1 is returned.
+ * If error, 0 is returned and slre.err_str points to the error message.
+ */
+int slre_compile(struct slre *, const char *re);
+
+/*
+ * Return 1 if match, 0 if no match.
+ * If `captured_substrings' array is not NULL, then it is filled with the
+ * values of captured substrings. captured_substrings[0] element is always
+ * a full matched substring. The round bracket captures start from
+ * captured_substrings[1].
+ * It is assumed that the size of captured_substrings array is enough to
+ * hold all captures. The caller function must make sure it is! So, the
+ * array_size = number_of_round_bracket_pairs + 1
+ */
+int slre_match(const struct slre *, const char *buf, int buf_len,
+ struct cap *captured_substrings);
+
+#ifdef SLRE_TEST
+void slre_dump(const struct slre *r, FILE *fp);
+#endif /* SLRE_TEST */
+#endif /* SLRE_HEADER_DEFINED */
diff --git a/lib/slre.c b/lib/slre.c
new file mode 100644
index 0000000..3069c6d
--- /dev/null
+++ b/lib/slre.c
@@ -0,0 +1,709 @@
+/*
+ * Copyright (c) 2004-2005 Sergey Lyubka <valenok@gmail.com>
+ * All rights reserved
+ *
+ * "THE BEER-WARE LICENSE" (Revision 42):
+ * Sergey Lyubka wrote this file. As long as you retain this notice you
+ * can do whatever you want with this stuff. If we meet some day, and you think
+ * this stuff is worth it, you can buy me a beer in return.
+ */
+
+/*
+ * Downloaded Sat Nov 5 17:43:06 CET 2011 at
+ * http://slre.sourceforge.net/1.0/slre.c
+ */
+
+#ifdef SLRE_TEST
+#include <stdio.h>
+#include <assert.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#else
+#include <common.h>
+#include <linux/ctype.h>
+#endif /* SLRE_TEST */
+
+#include <errno.h>
+
+#include <slre.h>
+
+enum {END, BRANCH, ANY, EXACT, ANYOF, ANYBUT, OPEN, CLOSE, BOL, EOL,
+ STAR, PLUS, STARQ, PLUSQ, QUEST, SPACE, NONSPACE, DIGIT};
+
+#ifdef SLRE_TEST
+static struct {
+ const char *name;
+ int narg;
+ const char *flags;
+} opcodes[] = {
+ {"END", 0, ""}, /* End of code block or program */
+ {"BRANCH", 2, "oo"}, /* Alternative operator, "|" */
+ {"ANY", 0, ""}, /* Match any character, "." */
+ {"EXACT", 2, "d"}, /* Match exact string */
+ {"ANYOF", 2, "D"}, /* Match any from set, "[]" */
+ {"ANYBUT", 2, "D"}, /* Match any but from set, "[^]"*/
+ {"OPEN ", 1, "i"}, /* Capture start, "(" */
+ {"CLOSE", 1, "i"}, /* Capture end, ")" */
+ {"BOL", 0, ""}, /* Beginning of string, "^" */
+ {"EOL", 0, ""}, /* End of string, "$" */
+ {"STAR", 1, "o"}, /* Match zero or more times "*" */
+ {"PLUS", 1, "o"}, /* Match one or more times, "+" */
+ {"STARQ", 1, "o"}, /* Non-greedy STAR, "*?" */
+ {"PLUSQ", 1, "o"}, /* Non-greedy PLUS, "+?" */
+ {"QUEST", 1, "o"}, /* Match zero or one time, "?" */
+ {"SPACE", 0, ""}, /* Match whitespace, "\s" */
+ {"NONSPACE", 0, ""}, /* Match non-space, "\S" */
+ {"DIGIT", 0, ""} /* Match digit, "\d" */
+};
+#endif /* SLRE_TEST */
+
+/*
+ * Commands and operands are all unsigned char (1 byte long). All code offsets
+ * are relative to current address, and positive (always point forward). Data
+ * offsets are absolute. Commands with operands:
+ *
+ * BRANCH offset1 offset2
+ * Try to match the code block that follows the BRANCH instruction
+ * (code block ends with END). If no match, try to match code block that
+ * starts at offset1. If either of these match, jump to offset2.
+ *
+ * EXACT data_offset data_length
+ * Try to match exact string. String is recorded in data section from
+ * data_offset, and has length data_length.
+ *
+ * OPEN capture_number
+ * CLOSE capture_number
+ * If the user have passed 'struct cap' array for captures, OPEN
+ * records the beginning of the matched substring (cap->ptr), CLOSE
+ * sets the length (cap->len) for respective capture_number.
+ *
+ * STAR code_offset
+ * PLUS code_offset
+ * QUEST code_offset
+ * *, +, ?, respectively. Try to gobble as much as possible from the
+ * matched buffer, until code block that follows these instructions
+ * matches. When the longest possible string is matched,
+ * jump to code_offset
+ *
+ * STARQ, PLUSQ are non-greedy versions of STAR and PLUS.
+ */
+
+static const char *meta_chars = "|.^$*+?()[\\";
+
+#ifdef SLRE_TEST
+
+static void
+print_character_set(FILE *fp, const unsigned char *p, int len)
+{
+ int i;
+
+ for (i = 0; i < len; i++) {
+ if (i > 0)
+ (void) fputc(',', fp);
+ if (p[i] == 0) {
+ i++;
+ if (p[i] == 0)
+ (void) fprintf(fp, "\\x%02x", p[i]);
+ else
+ (void) fprintf(fp, "%s", opcodes[p[i]].name);
+ } else if (isprint(p[i])) {
+ (void) fputc(p[i], fp);
+ } else {
+ (void) fprintf(fp, "\\x%02x", p[i]);
+ }
+ }
+}
+
+void
+slre_dump(const struct slre *r, FILE *fp)
+{
+ int i, j, ch, op, pc;
+
+ for (pc = 0; pc < r->code_size; pc++) {
+
+ op = r->code[pc];
+ (void) fprintf(fp, "%3d %s ", pc, opcodes[op].name);
+
+ for (i = 0; opcodes[op].flags[i] != '\0'; i++)
+ switch (opcodes[op].flags[i]) {
+ case 'i':
+ (void) fprintf(fp, "%d ", r->code[pc + 1]);
+ pc++;
+ break;
+ case 'o':
+ (void) fprintf(fp, "%d ",
+ pc + r->code[pc + 1] - i);
+ pc++;
+ break;
+ case 'D':
+ print_character_set(fp, r->data +
+ r->code[pc + 1], r->code[pc + 2]);
+ pc += 2;
+ break;
+ case 'd':
+ (void) fputc('"', fp);
+ for (j = 0; j < r->code[pc + 2]; j++) {
+ ch = r->data[r->code[pc + 1] + j];
+ if (isprint(ch)) {
+ (void) fputc(ch, fp);
+ } else {
+ (void) fprintf(fp,
+ "\\x%02x", ch);
+ }
+ }
+ (void) fputc('"', fp);
+ pc += 2;
+ break;
+ }
+
+ (void) fputc('\n', fp);
+ }
+}
+#endif /* SLRE_TEST */
+
+static void
+set_jump_offset(struct slre *r, int pc, int offset)
+{
+ assert(offset < r->code_size);
+
+ if (r->code_size - offset > 0xff)
+ r->err_str = "Jump offset is too big";
+ else
+ r->code[pc] = (unsigned char) (r->code_size - offset);
+}
+
+static void
+emit(struct slre *r, int code)
+{
+ if (r->code_size >= (int) (sizeof(r->code) / sizeof(r->code[0])))
+ r->err_str = "RE is too long (code overflow)";
+ else
+ r->code[r->code_size++] = (unsigned char) code;
+}
+
+static void
+store_char_in_data(struct slre *r, int ch)
+{
+ if (r->data_size >= (int) sizeof(r->data))
+ r->err_str = "RE is too long (data overflow)";
+ else
+ r->data[r->data_size++] = ch;
+}
+
+static void
+exact(struct slre *r, const char **re)
+{
+ int old_data_size = r->data_size;
+
+ while (**re != '\0' && (strchr(meta_chars, **re)) == NULL)
+ store_char_in_data(r, *(*re)++);
+
+ emit(r, EXACT);
+ emit(r, old_data_size);
+ emit(r, r->data_size - old_data_size);
+}
+
+static int
+get_escape_char(const char **re)
+{
+ int res;
+
+ switch (*(*re)++) {
+ case 'n':
+ res = '\n';
+ break;
+ case 'r':
+ res = '\r';
+ break;
+ case 't':
+ res = '\t';
+ break;
+ case '0':
+ res = 0;
+ break;
+ case 'S':
+ res = NONSPACE << 8;
+ break;
+ case 's':
+ res = SPACE << 8;
+ break;
+ case 'd':
+ res = DIGIT << 8;
+ break;
+ default:
+ res = (*re)[-1];
+ break;
+ }
+
+ return res;
+}
+
+static void
+anyof(struct slre *r, const char **re)
+{
+ int esc, old_data_size = r->data_size, op = ANYOF;
+
+ if (**re == '^') {
+ op = ANYBUT;
+ (*re)++;
+ }
+
+ while (**re != '\0')
+
+ switch (*(*re)++) {
+ case ']':
+ emit(r, op);
+ emit(r, old_data_size);
+ emit(r, r->data_size - old_data_size);
+ return;
+ /* NOTREACHED */
+ break;
+ case '\\':
+ esc = get_escape_char(re);
+ if ((esc & 0xff) == 0) {
+ store_char_in_data(r, 0);
+ store_char_in_data(r, esc >> 8);
+ } else {
+ store_char_in_data(r, esc);
+ }
+ break;
+ default:
+ store_char_in_data(r, (*re)[-1]);
+ break;
+ }
+
+ r->err_str = "No closing ']' bracket";
+}
+
+static void
+relocate(struct slre *r, int begin, int shift)
+{
+ emit(r, END);
+ memmove(r->code + begin + shift, r->code + begin, r->code_size - begin);
+ r->code_size += shift;
+}
+
+static void
+quantifier(struct slre *r, int prev, int op)
+{
+ if (r->code[prev] == EXACT && r->code[prev + 2] > 1) {
+ r->code[prev + 2]--;
+ emit(r, EXACT);
+ emit(r, r->code[prev + 1] + r->code[prev + 2]);
+ emit(r, 1);
+ prev = r->code_size - 3;
+ }
+ relocate(r, prev, 2);
+ r->code[prev] = op;
+ set_jump_offset(r, prev + 1, prev);
+}
+
+static void
+exact_one_char(struct slre *r, int ch)
+{
+ emit(r, EXACT);
+ emit(r, r->data_size);
+ emit(r, 1);
+ store_char_in_data(r, ch);
+}
+
+static void
+fixup_branch(struct slre *r, int fixup)
+{
+ if (fixup > 0) {
+ emit(r, END);
+ set_jump_offset(r, fixup, fixup - 2);
+ }
+}
+
+static void
+compile(struct slre *r, const char **re)
+{
+ int op, esc, branch_start, last_op, fixup, cap_no, level;
+
+ fixup = 0;
+ level = r->num_caps;
+ branch_start = last_op = r->code_size;
+
+ for (;;)
+ switch (*(*re)++) {
+ case '\0':
+ (*re)--;
+ return;
+ /* NOTREACHED */
+ break;
+ case '^':
+ emit(r, BOL);
+ break;
+ case '$':
+ emit(r, EOL);
+ break;
+ case '.':
+ last_op = r->code_size;
+ emit(r, ANY);
+ break;
+ case '[':
+ last_op = r->code_size;
+ anyof(r, re);
+ break;
+ case '\\':
+ last_op = r->code_size;
+ esc = get_escape_char(re);
+ if (esc & 0xff00)
+ emit(r, esc >> 8);
+ else
+ exact_one_char(r, esc);
+ break;
+ case '(':
+ last_op = r->code_size;
+ cap_no = ++r->num_caps;
+ emit(r, OPEN);
+ emit(r, cap_no);
+
+ compile(r, re);
+ if (*(*re)++ != ')') {
+ r->err_str = "No closing bracket";
+ return;
+ }
+
+ emit(r, CLOSE);
+ emit(r, cap_no);
+ break;
+ case ')':
+ (*re)--;
+ fixup_branch(r, fixup);
+ if (level == 0) {
+ r->err_str = "Unbalanced brackets";
+ return;
+ }
+ return;
+ /* NOTREACHED */
+ break;
+ case '+':
+ case '*':
+ op = (*re)[-1] == '*' ? STAR : PLUS;
+ if (**re == '?') {
+ (*re)++;
+ op = op == STAR ? STARQ : PLUSQ;
+ }
+ quantifier(r, last_op, op);
+ break;
+ case '?':
+ quantifier(r, last_op, QUEST);
+ break;
+ case '|':
+ fixup_branch(r, fixup);
+ relocate(r, branch_start, 3);
+ r->code[branch_start] = BRANCH;
+ set_jump_offset(r, branch_start + 1, branch_start);
+ fixup = branch_start + 2;
+ r->code[fixup] = 0xff;
+ break;
+ default:
+ (*re)--;
+ last_op = r->code_size;
+ exact(r, re);
+ break;
+ }
+}
+
+int
+slre_compile(struct slre *r, const char *re)
+{
+ r->err_str = NULL;
+ r->code_size = r->data_size = r->num_caps = r->anchored = 0;
+
+ if (*re == '^')
+ r->anchored++;
+
+ emit(r, OPEN); /* This will capture what matches full RE */
+ emit(r, 0);
+
+ while (*re != '\0')
+ compile(r, &re);
+
+ if (r->code[2] == BRANCH)
+ fixup_branch(r, 4);
+
+ emit(r, CLOSE);
+ emit(r, 0);
+ emit(r, END);
+
+ return (r->err_str == NULL ? 1 : 0);
+}
+
+static int match(const struct slre *, int,
+ const char *, int, int *, struct cap *);
+
+static void
+loop_greedy(const struct slre *r, int pc, const char *s, int len, int *ofs)
+{
+ int saved_offset, matched_offset;
+
+ saved_offset = matched_offset = *ofs;
+
+ while (match(r, pc + 2, s, len, ofs, NULL)) {
+ saved_offset = *ofs;
+ if (match(r, pc + r->code[pc + 1], s, len, ofs, NULL))
+ matched_offset = saved_offset;
+ *ofs = saved_offset;
+ }
+
+ *ofs = matched_offset;
+}
+
+static void
+loop_non_greedy(const struct slre *r, int pc, const char *s, int len, int *ofs)
+{
+ int saved_offset = *ofs;
+
+ while (match(r, pc + 2, s, len, ofs, NULL)) {
+ saved_offset = *ofs;
+ if (match(r, pc + r->code[pc + 1], s, len, ofs, NULL))
+ break;
+ }
+
+ *ofs = saved_offset;
+}
+
+static int
+is_any_of(const unsigned char *p, int len, const char *s, int *ofs)
+{
+ int i, ch;
+
+ ch = s[*ofs];
+
+ for (i = 0; i < len; i++)
+ if (p[i] == ch) {
+ (*ofs)++;
+ return 1;
+ }
+
+ return 0;
+}
+
+static int
+is_any_but(const unsigned char *p, int len, const char *s, int *ofs)
+{
+ int i, ch;
+
+ ch = s[*ofs];
+
+ for (i = 0; i < len; i++) {
+ if (p[i] == ch)
+ return 0;
+ }
+
+ (*ofs)++;
+ return 1;
+}
+
+static int
+match(const struct slre *r, int pc, const char *s, int len,
+ int *ofs, struct cap *caps)
+{
+ int n, saved_offset, res = 1;
+
+ while (res && r->code[pc] != END) {
+
+ assert(pc < r->code_size);
+ assert(pc < (int) (sizeof(r->code) / sizeof(r->code[0])));
+
+ switch (r->code[pc]) {
+ case BRANCH:
+ saved_offset = *ofs;
+ res = match(r, pc + 3, s, len, ofs, caps);
+ if (res == 0) {
+ *ofs = saved_offset;
+ res = match(r, pc + r->code[pc + 1],
+ s, len, ofs, caps);
+ }
+ pc += r->code[pc + 2];
+ break;
+ case EXACT:
+ res = 0;
+ n = r->code[pc + 2]; /* String length */
+ if (n <= len - *ofs && !memcmp(s + *ofs, r->data +
+ r->code[pc + 1], n)) {
+ (*ofs) += n;
+ res = 1;
+ }
+ pc += 3;
+ break;
+ case QUEST:
+ res = 1;
+ saved_offset = *ofs;
+ if (!match(r, pc + 2, s, len, ofs, caps))
+ *ofs = saved_offset;
+ pc += r->code[pc + 1];
+ break;
+ case STAR:
+ res = 1;
+ loop_greedy(r, pc, s, len, ofs);
+ pc += r->code[pc + 1];
+ break;
+ case STARQ:
+ res = 1;
+ loop_non_greedy(r, pc, s, len, ofs);
+ pc += r->code[pc + 1];
+ break;
+ case PLUS:
+ res = match(r, pc + 2, s, len, ofs, caps);
+ if (res == 0)
+ break;
+
+ loop_greedy(r, pc, s, len, ofs);
+ pc += r->code[pc + 1];
+ break;
+ case PLUSQ:
+ res = match(r, pc + 2, s, len, ofs, caps);
+ if (res == 0)
+ break;
+
+ loop_non_greedy(r, pc, s, len, ofs);
+ pc += r->code[pc + 1];
+ break;
+ case SPACE:
+ res = 0;
+ if (*ofs < len && isspace(((unsigned char *)s)[*ofs])) {
+ (*ofs)++;
+ res = 1;
+ }
+ pc++;
+ break;
+ case NONSPACE:
+ res = 0;
+ if (*ofs < len &&
+ !isspace(((unsigned char *)s)[*ofs])) {
+ (*ofs)++;
+ res = 1;
+ }
+ pc++;
+ break;
+ case DIGIT:
+ res = 0;
+ if (*ofs < len && isdigit(((unsigned char *)s)[*ofs])) {
+ (*ofs)++;
+ res = 1;
+ }
+ pc++;
+ break;
+ case ANY:
+ res = 0;
+ if (*ofs < len) {
+ (*ofs)++;
+ res = 1;
+ }
+ pc++;
+ break;
+ case ANYOF:
+ res = 0;
+ if (*ofs < len)
+ res = is_any_of(r->data + r->code[pc + 1],
+ r->code[pc + 2], s, ofs);
+ pc += 3;
+ break;
+ case ANYBUT:
+ res = 0;
+ if (*ofs < len)
+ res = is_any_but(r->data + r->code[pc + 1],
+ r->code[pc + 2], s, ofs);
+ pc += 3;
+ break;
+ case BOL:
+ res = *ofs == 0 ? 1 : 0;
+ pc++;
+ break;
+ case EOL:
+ res = *ofs == len ? 1 : 0;
+ pc++;
+ break;
+ case OPEN:
+ if (caps != NULL)
+ caps[r->code[pc + 1]].ptr = s + *ofs;
+ pc += 2;
+ break;
+ case CLOSE:
+ if (caps != NULL)
+ caps[r->code[pc + 1]].len = (s + *ofs) -
+ caps[r->code[pc + 1]].ptr;
+ pc += 2;
+ break;
+ case END:
+ pc++;
+ break;
+ default:
+ printf("unknown cmd (%d) at %d\n", r->code[pc], pc);
+ assert(0);
+ break;
+ }
+ }
+
+ return res;
+}
+
+int
+slre_match(const struct slre *r, const char *buf, int len,
+ struct cap *caps)
+{
+ int i, ofs = 0, res = 0;
+
+ if (r->anchored) {
+ res = match(r, 0, buf, len, &ofs, caps);
+ } else {
+ for (i = 0; i < len && res == 0; i++) {
+ ofs = i;
+ res = match(r, 0, buf, len, &ofs, caps);
+ }
+ }
+
+ return res;
+}
+
+#ifdef SLRE_TEST
+int main(int argc, char *argv[])
+{
+ struct slre slre;
+ struct cap caps[20];
+ char data[1 * 1024 * 1024];
+ FILE *fp;
+ int i, count, res, len;
+
+ if (argc < 3) {
+ printf("Usage: %s 'slre' <file> [count]\n", argv[0]);
+ } else {
+ fp = fopen(argv[2], "rb");
+ if (fp == NULL) {
+ printf("Error: cannot open %s:%s\n",
+ argv[2], strerror(errno));
+ } else if (!slre_compile(&slre, argv[1])) {
+ printf("Error compiling slre: %s\n", slre.err_str);
+ } else {
+ slre_dump(&slre, stderr);
+
+ (void) memset(caps, 0, sizeof(caps));
+
+ /* Read first 128K of file */
+ len = fread(data, 1, sizeof(data), fp);
+ (void) fclose(fp);
+
+ res = 0;
+ count = argc > 3 ? atoi(argv[3]) : 1;
+ for (i = 0; i < count; i++)
+ res = slre_match(&slre, data, len, caps);
+
+ printf("Result: %d\n", res);
+
+ for (i = 0; i < 20; i++) {
+ if (caps[i].len > 0) {
+ printf("Substring %d: [%.*s]\n", i,
+ caps[i].len, caps[i].ptr);
+ }
+ }
+ }
+ }
+
+ return 0;
+}
+#endif /* SLRE_TEST */
--
1.7.6.4
^ permalink raw reply related
* [U-Boot] [PATCH 2/2] env: add regex support for environment variables
From: Wolfgang Denk @ 2011-11-06 19:55 UTC (permalink / raw)
To: u-boot
In-Reply-To: <1320609326-3259-1-git-send-email-wd@denx.de>
Syntax: env regex [-g] [-s subst] regex name [...]
The code is based on SLRE (http://slre.sourceforge.net/)
which provides a tiny subset of Perl regular expressions.
Without options, this will implement regex pattern matching on
environment variables. Variables with matching values will be printd
as with "env print", so this basicly performs a "grep" on the given
list of variables.
With "-s subst", the matching pattern gets replaced with the string
given in "subst". Back references '\0' ... '\9' are allowed, where
'\0' stands for the whole matched string, and '\1', '\2', ... are
replaced with the first, second, ... sub-pattern.
"-g" allows for global replacement.
Examples:
=> setenv foo abcdefghijklmnop
=> env reg 'A' '[bdgmo]' foo
=> env reg -s 'A' '[bdgmo]' foo
foo=aAcdefghijklmnop
=> env reg -g -s 'B' '[bdgmo]' foo
foo=aAcBefBhijklBnBp
=> env reg -g -s '\\2--\\1' '(Be).*(kl)' foo
foo=aAckl--BeBnBp
[Note: the double backslashes are needed by U-Boot's "shell" so one
backslash gets passed to the actual command.]
Signed-off-by: Wolfgang Denk <wd@denx.de>
---
common/cmd_nvedit.c | 288 +++++++++++++++++++++++++++++++++++++++++++++++++++
lib/Makefile | 1 +
2 files changed, 289 insertions(+), 0 deletions(-)
diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c
index 2dd4eba..4307d27 100644
--- a/common/cmd_nvedit.c
+++ b/common/cmd_nvedit.c
@@ -164,6 +164,288 @@ int do_env_print (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
return rcode;
}
+#ifdef CONFIG_CMD_REGEX
+
+/*
+ * memstr - Find the first substring in memory
+ * @s1: The string to be searched
+ * @s2: The string to search for
+ *
+ * Similar to and based on strstr(),
+ * but strings do not need to be NUL terminated.
+ */
+static char *memstr(const char *s1, int l1, const char *s2, int l2)
+{
+ if (!l2)
+ return (char *) s1;
+
+ while (l1 >= l2) {
+ l1--;
+ if (!memcmp(s1, s2, l2))
+ return (char *) s1;
+ s1++;
+ }
+ return NULL;
+}
+
+static char *substitute(char *string, /* string buffer */
+ int *slen, /* current string length */
+ int ssize, /* string bufer size */
+ const char *old,/* old (replaced) string */
+ int olen, /* length of old string */
+ const char *new,/* new (replacement) string */
+ int nlen) /* length of new string */
+{
+ char *p = memstr(string, *slen, old, olen);
+
+ if (p == NULL)
+ return NULL;
+
+ debug("## Match at pos %ld: match len %d, subst len %d\n",
+ (long)(p - string), olen, nlen);
+
+ /* make sure replacement matches */
+ if (*slen + nlen - olen > ssize) {
+ printf("## error: substitution buffer overflow\n");
+ return NULL;
+ }
+
+ /* move tail if needed */
+ if (olen != nlen) {
+ int tail, len;
+
+ len = (olen > nlen) ? olen : nlen;
+
+ tail = ssize - (p + len - string);
+
+ debug("## tail len %d\n", tail);
+
+ memmove(p + nlen, p + olen, tail);
+ }
+
+ /* insert substitue */
+ memcpy(p, new, nlen);
+
+ *slen += nlen - olen;
+
+ return p + nlen;
+}
+
+#include "slre.h"
+
+#define SLRE_BUFSZ 16384
+#define SLRE_PATSZ 4096
+
+/*
+ * Perform regex operations on a environment variable
+ *
+ * Returns 0 in case of error, or length of printed string
+ */
+static int env_regex(const char *name, const char *regexp, const char *subst,
+ int global)
+{
+ ENTRY e, *ep;
+ struct slre slre;
+ struct cap caps[32];
+ char data[SLRE_BUFSZ];
+ char *datap = data;
+ int res, len, nlen, loop;
+
+ if (name == NULL)
+ return 0;
+
+ if (slre_compile(&slre, regexp) == 0) {
+ printf("Error compiling regex: %s\n", slre.err_str);
+ return 1;
+ }
+
+ e.key = name;
+ e.data = NULL;
+ hsearch_r(e, FIND, &ep, &env_htab);
+ if (ep == NULL) {
+ printf("## Error: \"%s\" not defined\n", name);
+ return 1;
+ }
+
+ debug("REGEX on %s=%s\n", ep->key, ep->data);
+ debug("REGEX=\"%s\", SUBST=\"%s\", GLOBAL=%d\n",
+ regexp, subst ? subst : "<NULL>", global);
+
+ len = strlen(ep->data);
+ if (len + 1 > SLRE_BUFSZ) {
+ printf("## error: substitution buffer overflow\n");
+ return 1;
+ }
+
+ strcpy(data, ep->data);
+
+ if (subst == NULL)
+ nlen = 0;
+ else
+ nlen = strlen(subst);
+
+ for (loop = 0; ;loop++) {
+ char nbuf[SLRE_PATSZ];
+ const char *old;;
+ char *np;
+ int i, olen;
+
+ (void) memset(caps, 0, sizeof(caps));
+
+ res = slre_match(&slre, datap, len, caps);
+
+ debug("Result: %d\n", res);
+
+ for (i = 0; i < 20; i++) {
+ if (caps[i].len > 0) {
+ debug("Substring %d: [%.*s]\n", i,
+ caps[i].len, caps[i].ptr);
+ }
+ }
+
+ if (res == 0) {
+ if (loop == 0) {
+ printf("%s: No match\n", ep->key);
+ return 1;
+ } else {
+ break;
+ }
+ }
+
+ debug("## MATCH ## %s\n", data);
+
+ if (subst == NULL) {
+ printf("%s=%s\n", ep->key, ep->data);
+ return 0;
+ }
+
+ old = caps[0].ptr;
+ olen = caps[0].len;
+
+ if (nlen + 1 >= SLRE_PATSZ) {
+ printf("## error: pattern buffer overflow\n");
+ return 1;
+ }
+ strcpy(nbuf, subst);
+
+ debug("## SUBST(1) ## %s\n", nbuf);
+
+ /*
+ * Handle back references
+ *
+ * Support for \0 ... \9, where \0 is the
+ * whole matched pattern (similar to &).
+ *
+ * Implementation is a bit simpleminded as
+ * backrefs are substituted sequentially, one
+ * by one. This will lead to somewhat
+ * unexpected results if the replacement
+ * strings contain any \N strings then then
+ * may get substitued, too. We accept this
+ * restriction for the sake of simplicity.
+ */
+ for (i = 0; i < 10; ++i) {
+ char backref[2] = {
+ '\\',
+ '0',
+ };
+
+ if (caps[i].len == 0)
+ break;
+
+ backref[1] += i;
+
+ debug("## BACKREF %d: replace \"%.*s\" by \"%.*s\" in \"%s\"\n",
+ i,
+ 2, backref,
+ caps[i].len, caps[i].ptr,
+ nbuf);
+
+ for (np = nbuf;;) {
+ char *p = memstr(np, nlen,
+ backref, 2);
+
+ if (p == NULL)
+ break;
+
+ np = substitute(np, &nlen,
+ SLRE_PATSZ,
+ backref, 2,
+ caps[i].ptr, caps[i].len);
+
+ if (np == NULL)
+ return 1;
+ }
+ }
+ debug("## SUBST(2) ## %s\n", nbuf);
+
+ datap = substitute(datap, &len, SLRE_BUFSZ,
+ old, olen,
+ nbuf, nlen);
+
+ if (datap == NULL)
+ return 1;
+
+ debug("## REMAINDER: %s\n", datap);
+
+ debug("## RESULT: %s\n", data);
+
+ if (!global)
+ break;
+ }
+ debug("## FINAL (now setenv()) : %s\n", data);
+
+ printf("%s=%s\n", ep->key, data);
+
+ return setenv(ep->key, data);
+}
+
+static int do_env_regex(cmd_tbl_t *cmdtp, int flag, int argc,
+ char *const argv[])
+{
+ int i;
+ int rcode = 0;
+ int global = 0;
+ const char *regex, *subst = NULL;
+
+ while (--argc > 0 && **++argv == '-') {
+ char *arg = *argv;
+ while (*++arg) {
+ switch (*arg) {
+ case 'e':
+ /* allow regex starting with '-' */
+ ++argv;
+ goto DONE;
+ case 'g':
+ global = 1;
+ break;
+ case 's':
+ if (--argc <= 0)
+ return cmd_usage(cmdtp);
+ subst = *++argv;
+ goto NXTARG;
+ default:
+ return cmd_usage(cmdtp);
+ }
+ }
+NXTARG: ;
+ }
+DONE:
+ if (argc < 2)
+ return cmd_usage(cmdtp);
+
+ regex = argv[0];
+
+ /* process selected env vars */
+ for (i = 1; i < argc; ++i) {
+ if (env_regex(argv[i], regex, subst, global) != 0)
+ rcode = 1;
+ }
+
+ return rcode;
+}
+#endif
+
#ifdef CONFIG_CMD_GREPENV
static int do_env_grep (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
@@ -1022,6 +1304,9 @@ static cmd_tbl_t cmd_env_sub[] = {
U_BOOT_CMD_MKENT(import, 5, 0, do_env_import, "", ""),
#endif
U_BOOT_CMD_MKENT(print, CONFIG_SYS_MAXARGS, 1, do_env_print, "", ""),
+#if defined(CONFIG_CMD_REGEX)
+ U_BOOT_CMD_MKENT(regex, CONFIG_SYS_MAXARGS, 1, do_env_regex, "", ""),
+#endif
#if defined(CONFIG_CMD_RUN)
U_BOOT_CMD_MKENT(run, CONFIG_SYS_MAXARGS, 1, do_run, "", ""),
#endif
@@ -1076,6 +1361,9 @@ U_BOOT_CMD(
#endif
"env import [-d] [-t | -b | -c] addr [size] - import environment\n"
"env print [name ...] - print environment\n"
+#ifdef CONFIG_CMD_REGEX
+ "env regex [-g] [-s subst] regex name [...] - search and substitute regular expression\n"
+#endif
#if defined(CONFIG_CMD_RUN)
"env run var [...] - run commands in an environment variable\n"
#endif
diff --git a/lib/Makefile b/lib/Makefile
index 54708c2..346409c 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -48,6 +48,7 @@ COBJS-y += net_utils.o
COBJS-y += qsort.o
COBJS-$(CONFIG_SHA1) += sha1.o
COBJS-$(CONFIG_SHA256) += sha256.o
+COBJS-$(CONFIG_CMD_REGEX) += slre.o
COBJS-y += strmhz.o
COBJS-$(CONFIG_RBTREE) += rbtree.o
endif
--
1.7.6.4
^ permalink raw reply related
* [U-Boot] [PATCH v0 0/4] env: reworking + default/import individual vars
From: Wolfgang Denk @ 2011-11-06 19:57 UTC (permalink / raw)
To: u-boot
In-Reply-To: <1319647072-17504-1-git-send-email-gerlando.falauto@keymile.com>
Dear Gerlando Falauto,
In message <1319647072-17504-1-git-send-email-gerlando.falauto@keymile.com> you wrote:
> This is a resubmission (after removing remove checkpatch errors) of
> http://lists.denx.de/pipermail/u-boot/2011-September/102875.html
>
> Here I am proposing a set of changes in the behaviour of the environment
> import/set_to_default functions.
>
> PATCH 1:
> Add a "new" himport_ex() function (reworking of himport_r which is now a
> wrapper around it), which has 3 new arguments:
>
> "nvars", "vars":, number and list of variables to take into account
> (0 means ALL)
>
> "apply" callback function which is in charge of checking whether a
> variable can be overwritten, and possibly immediately apply the changes.
> This parameter would be either set to NULL (in which case nothing should
> change wrt to the past -- i.e. environment is blindly imported) or to
> "env_check_apply()" function, whose code was taken away from _do_env_set().
> This would be useful, for instance, for "baudrate" or "stdin,stderr,stdout",
> whose changes would not otherwise be effective until the next reboot.
>
> The idea is that there should be a single place where all the checks are
> to be performed. So the same function env_check_apply() is called from
> _do_env_set() as well (thus keeping the previous behavior).
Would you please also update the help messages for the respective
commands so we can see their correct (new) usage there?
Thanks.
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"There is such a fine line between genius and stupidity."
- David St. Hubbins, "Spinal Tap"
^ permalink raw reply
* Re: REGRESSION: "perf: Add PM notifiers ..." breaks resume
From: Peter Zijlstra @ 2011-11-06 19:57 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Andi Kleen, mingo, linux-kernel, rjw
In-Reply-To: <CA+55aFwCf41GFOVA656-ZgZB5mBNkpH3KqRfJ_Ornkn3RWF5gQ@mail.gmail.com>
On Wed, 2011-11-02 at 17:00 -0700, Linus Torvalds wrote:
> Peter, Ingo, ping?
>
>
Shoot it.. I'll poke at it later and try and solve the thing
differently.
^ permalink raw reply
* Re: femon signal strength
From: Steffen Barszus @ 2011-11-06 19:59 UTC (permalink / raw)
To: linux-media Mailing List; +Cc: James, Devin Heitmueller
In-Reply-To: <CAGoCfixoOwZumohwJrLVKhfpUNGYwbD9uSq7nM0GhqriOx0FxA@mail.gmail.com>
On Sun, 6 Nov 2011 10:01:49 -0500
Devin Heitmueller <dheitmueller@kernellabs.com> wrote:
> On Sunday, November 6, 2011, Steffen Barszus
> <steffenbpunkt@googlemail.com> wrote:
> > On Sat, 5 Nov 2011 15:38:50 -0400
> > Devin Heitmueller <dheitmueller@kernellabs.com> wrote:
> >
> >> On Saturday, November 5, 2011, Steffen Barszus
> >> <steffenbpunkt@googlemail.com> wrote:
> >> > On Wed, 26 Oct 2011 15:58:32 -0400
> >> > James <bjlockie@lockie.ca> wrote:
> >> >> How about adding switches to femon, it won't be automatic?
> >> >>
> >> >> I'm going to make femon work for my card, anyways. :-)
> >> >
> >> > This is no solution - drivers should be patched to deliver
> >> > result in common format. femon is not the only application
> >> > reading this values. And every application carrying its own set
> >> > of correction tables doesn't help in any way. Shouldn't be to
> >> > hard to agree on one scale and scale whatever value to that in
> >> > reporting the signal strength.
> >>
> >> You would think this would be relatively simple to get a consensus
> >> on. You would be wrong though. I would suggest doing a search of
> >> the ML for "SNR" so you can see all. the history of the debate
> >> amongst the driver developers.
> >
> > I don't need to read the history of this and i am not even
> > interested in doing so. No matter what "The right solution" is,
> > showing the inability of acting as a team and putting the conflict
> > to the user is the worst solution you can achieve. Any uniform
> > scale is better, then whats there at the moment.
> >
> > Being ignorant in this respect is and was intended.
>
> Yes, as a team the Linux v4l-dvb team very much resembles
> dysfunctional family. And saying this as one of the developers, it
> is pretty embarrassing that we haven't been able to agree on a
> standard (and I've said on numerous occasions when discussing this
> issue that any standard that is uniform is better than no standard at
> all). "Perfect is the enemy of good"
i know that and i didn't mention with any word _you_ should fix that.
However it needs to be fixed.
> That said, when random users show up and berate the developers for not
> thinking of the user experience, my knee-jerk reaction is to think,
> "Fuck you. You don't pay my salary and it's not my job to work on
> the things you think are important. Submit you own patches if you
> think you can do better.". Obviously I don't say that because it
> isn't polite, but the core sentiment is accurate.
First i did not berate anyone. Second i don't care if you think about
user experience. I said don't put your conflicts to the user. Third I
don't tell you what to do.
I just stated the obvious.
Let me rephrase what i tried to say initially:
No please don't start patching femon for a single card, there are other
applications using this interface, which would possibly need to go the
same route, once this get started. Then there are applications which
wont do this (which i can understand, because its wrong). Suggestion
will be to patch/fix the driver - which in the end means that the fight
will be done at the back of the end user or people who try to make life
easier for them and for example putting together specialized linux
distributions. So from my perspective it means that beside this patches:
ftp://ftp.tvdr.de/vdr/Developer/Driver-Patches/
It will start to become more patches for the different cards, which i
get asked for to include it in my dkms package, or people start making
patches for vdr and other applications to do the same as suggested here,
which also end up at the same side.
This is frustrating. Has my frustration been visible in my
mail ? Not impossible. But where else than on this list i could plead
for help in getting this fixed at the right place ? Devin i'm not asking
you to fix it, i'm writing to linux-media as i did in my initial mail.
^ permalink raw reply
* Re: [PATCH] KVM: Add wrapper script around QEMU to test kernels
From: Paolo Bonzini @ 2011-11-06 20:01 UTC (permalink / raw)
To: Pekka Enberg
Cc: kvm@vger.kernel.org list, qemu-devel Developers,
linux-kernel@vger.kernel.org List, Alexander Graf, Blue Swirl,
Avi Kivity, Américo Wang, Ingo Molnar, Linus Torvalds
In-Reply-To: <CAOJsxLGzMqQDwfm8C-6g8SCapEmGs7uUPq+SuL946yg=anV85g@mail.gmail.com>
On 11/06/2011 08:17 PM, Pekka Enberg wrote:
>> > But I'm pretty certain that, when testing 3.2 with KVM tool in a couple of
>> > years, I want all the shining new features you added in this time; I don't
>> > want the old end-2011 code. Same if I'm bisecting kernels, I don't want to
>> > build KVM tool once per bisection cycle, do I?
>
> If you're bisecting breakage that can be in the guest kernel or the
> KVM tool, you'd want to build both.
No. I want to try new tool/old kernel and old tool/new kernel (kernel
can be either guest or host, depending on the nature of the bug), and
then bisect just one. (*) And that's the exceptional case, and only KVM
tool developers really should have the need to do that.
(*) Not coincidentially, that's what git bisect does when HEAD is
a merge of two unrelated histories.
> What would prevent you from using a newer KVM tool with an older kernel?
Nothing, but I'm just giving you *strong* hints that a submodule or a
merged tool is the wrong solution, and the histories of kernel and tool
should be kept separate.
More clearly: for its supposedly intended usage, namely testing
development kernels in a *guest*, KVM tool will generally not run on the
exact *host* kernel that is in the tree it lives with. Almost never, in
fact. Unlike perf, if you want to test multiple guest kernels you
should never need to rebuild KVM tool!
This is the main argument as to whether or not to merge the tool. Would
the integration of the *build* make sense or not? Assume you adapt the
ktest script to make both the KVM tool and the kernel, and test the
latter using the former. Your host kernel never changes, and yet you
introduce a new variable in your testing. That complicates things, it
doesn't simplify them.
Paolo
^ permalink raw reply
* Re: [PATCH] KVM: Add wrapper script around QEMU to test kernels
From: Paolo Bonzini @ 2011-11-06 20:01 UTC (permalink / raw)
To: Pekka Enberg
Cc: Alexander Graf, kvm@vger.kernel.org list, qemu-devel Developers,
linux-kernel@vger.kernel.org List, Blue Swirl, Avi Kivity,
Américo Wang, Ingo Molnar, Linus Torvalds
In-Reply-To: <CAOJsxLGzMqQDwfm8C-6g8SCapEmGs7uUPq+SuL946yg=anV85g@mail.gmail.com>
On 11/06/2011 08:17 PM, Pekka Enberg wrote:
>> > But I'm pretty certain that, when testing 3.2 with KVM tool in a couple of
>> > years, I want all the shining new features you added in this time; I don't
>> > want the old end-2011 code. Same if I'm bisecting kernels, I don't want to
>> > build KVM tool once per bisection cycle, do I?
>
> If you're bisecting breakage that can be in the guest kernel or the
> KVM tool, you'd want to build both.
No. I want to try new tool/old kernel and old tool/new kernel (kernel
can be either guest or host, depending on the nature of the bug), and
then bisect just one. (*) And that's the exceptional case, and only KVM
tool developers really should have the need to do that.
(*) Not coincidentially, that's what git bisect does when HEAD is
a merge of two unrelated histories.
> What would prevent you from using a newer KVM tool with an older kernel?
Nothing, but I'm just giving you *strong* hints that a submodule or a
merged tool is the wrong solution, and the histories of kernel and tool
should be kept separate.
More clearly: for its supposedly intended usage, namely testing
development kernels in a *guest*, KVM tool will generally not run on the
exact *host* kernel that is in the tree it lives with. Almost never, in
fact. Unlike perf, if you want to test multiple guest kernels you
should never need to rebuild KVM tool!
This is the main argument as to whether or not to merge the tool. Would
the integration of the *build* make sense or not? Assume you adapt the
ktest script to make both the KVM tool and the kernel, and test the
latter using the former. Your host kernel never changes, and yet you
introduce a new variable in your testing. That complicates things, it
doesn't simplify them.
Paolo
^ permalink raw reply
* Re: [Qemu-devel] [PATCH] KVM: Add wrapper script around QEMU to test kernels
From: Paolo Bonzini @ 2011-11-06 20:01 UTC (permalink / raw)
To: Pekka Enberg
Cc: kvm@vger.kernel.org list, qemu-devel Developers,
linux-kernel@vger.kernel.org List, Alexander Graf, Blue Swirl,
Avi Kivity, Américo Wang, Ingo Molnar, Linus Torvalds
In-Reply-To: <CAOJsxLGzMqQDwfm8C-6g8SCapEmGs7uUPq+SuL946yg=anV85g@mail.gmail.com>
On 11/06/2011 08:17 PM, Pekka Enberg wrote:
>> > But I'm pretty certain that, when testing 3.2 with KVM tool in a couple of
>> > years, I want all the shining new features you added in this time; I don't
>> > want the old end-2011 code. Same if I'm bisecting kernels, I don't want to
>> > build KVM tool once per bisection cycle, do I?
>
> If you're bisecting breakage that can be in the guest kernel or the
> KVM tool, you'd want to build both.
No. I want to try new tool/old kernel and old tool/new kernel (kernel
can be either guest or host, depending on the nature of the bug), and
then bisect just one. (*) And that's the exceptional case, and only KVM
tool developers really should have the need to do that.
(*) Not coincidentially, that's what git bisect does when HEAD is
a merge of two unrelated histories.
> What would prevent you from using a newer KVM tool with an older kernel?
Nothing, but I'm just giving you *strong* hints that a submodule or a
merged tool is the wrong solution, and the histories of kernel and tool
should be kept separate.
More clearly: for its supposedly intended usage, namely testing
development kernels in a *guest*, KVM tool will generally not run on the
exact *host* kernel that is in the tree it lives with. Almost never, in
fact. Unlike perf, if you want to test multiple guest kernels you
should never need to rebuild KVM tool!
This is the main argument as to whether or not to merge the tool. Would
the integration of the *build* make sense or not? Assume you adapt the
ktest script to make both the KVM tool and the kernel, and test the
latter using the former. Your host kernel never changes, and yet you
introduce a new variable in your testing. That complicates things, it
doesn't simplify them.
Paolo
^ permalink raw reply
* Re: [Xenomai-help] Xenomai 2.6.0 - kernel seg faults on AT91
From: Gilles Chanteperdrix @ 2011-11-06 20:02 UTC (permalink / raw)
To: at91_enthus; +Cc: xenomai
In-Reply-To: <4EB6E5FB.3010809@domain.hid>
On 11/06/2011 08:54 PM, at91_enthus wrote:
> On 11/06/2011 01:03 PM, Gilles Chanteperdrix wrote:
>> On 11/06/2011 08:00 PM, at91_enthus wrote:
>>> On 11/06/2011 12:32 PM, Gilles Chanteperdrix wrote:
>>>> On 11/06/2011 07:25 PM, at91_enthus wrote:
>>>>> On 11/06/2011 12:10 PM, at91_enthus wrote:
>>>>>> On 11/06/2011 12:01 PM, Gilles Chanteperdrix wrote:
>>>>>>> On 11/06/2011 06:56 PM, at91_enthus wrote:
>>>>>>>> Hi.
>>>>>>>>
>>>>>>>> I gave Xenomai 2.6.0 a try and installed a newly patched kernel on my
>>>>>>>> AT91SAM9G20 board.
>>>>>>>>
>>>>>>>> Here is my setup:
>>>>>>>>
>>>>>>>> proc: AT91SAM9G20
>>>>>>>> kernel: 2.6.35.9
>>>>>>>> OS: embedded Debian Squeeze
>>>>>>>>
>>>>>>>> The board boots fine up to stage 2 (user terminal). Sometimes, I am able
>>>>>>>> to get a login terminal, despite seg fault messages.
>>>>>>>>
>>>>>>>> A similar behavior occurs in a Xenomai capable 2.6.37 kernel, only
>>>>>>>> without the fault messages. In this case the board simply freezes.
>>>>>>>>
>>>>>>>> I included the files (.config and fault messages) in the attachments.
>>>>>>>>
>>>>>>> You enabled CONFIG_FCSE_GUARANTEED, I do not think Debian squeeze can
>>>>>>> boot with that, you need a real embedded filesystem, or use
>>>>>>> CONFIG_FCSE_BEST_EFFORT.
>>>>>>>
>>>>>>>
>>>>>> Since I've started looking in to Xenomai, I have been using FCSE
>>>>>> "guaranteed" and "best efort" along with both Debian Squeeze and Lenny
>>>>>> (Xenomai 2.5 series) without any issues.
>>>>>>
>>>>>> I'll change the FCSE setting to see if I get a different behavior.
>>>>>>
>>>>>> Regards.
>>>>> I put the results for CONFIG_FCSE_BEST_EFFORT in the attachment.
>>>> Unusable. To make it usable, the following options are lacking:
>>>> CONFIG_FCSE_MESSAGES
>>>> CONFIG_FRAME_POINTER
>>> I couldn't find this option.
>> You need to disable STACK_UNWIND. Without it, some stack traces are
>> unreadable such as the one you keep sending.
>>
>
> rc.local looked suspicious in the debug messages.
>
> To be more exact, it contained the following lines:
>
> #! /bin/sh
> chmod 777 /proc/xenomai/latency
> echo "1000" > /proc/xenomai/latency
> exit 0
>
> The setting came from the previous installation, because I kept getting
> negative values for latencies.
Note that you can hardwire a value for the latency in the kernel
configuration.
>
> Anyway, I removed the offending lines and my system boots correctly. If
> I enter the lines by hand, I get no segfaults. However, if I try to
> execute /etc/rc.local (with the two lines uncommented) by hand, the
> kernel seg faults and the system freezes.
>
> Odd.
Yes, really odd. I am unable to reproduce this issue.
What was the last version known to be working?
--
Gilles.
^ permalink raw reply
* Compat-wireless release for 2011-11-06 is baked
From: Compat-wireless cronjob account @ 2011-11-06 20:02 UTC (permalink / raw)
To: linux-wireless
compat-wireless code metrics
814862 - Total upstream lines of code being pulled
2431 - backport code changes
2113 - backport code additions
318 - backport code deletions
8588 - backport from compat module
11019 - total backport code
1.3523 - % of code consists of backport work
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.