Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 2 Dec 2015 15:59:57 +0100
From:      Zbigniew Bodek <zbb@semihalf.com>
To:        Russell Haley <russ.haley@gmail.com>
Cc:        "freebsd-arm@freebsd.org" <freebsd-arm@freebsd.org>
Subject:   Re: RFC: HW watchpoints and single stepping for ARMv6/v7
Message-ID:  <CAG7dG%2ByZH=RcaEKo5c6DPwoeTaQchtzduXp3MjmLUKarpyyZrw@mail.gmail.com>
In-Reply-To: <CAG7dG%2Bx5ex2jYgh8EQe2WQEmycZHOTJgG4AoWaUa6ARw_8nVcw@mail.gmail.com>
References:  <CAG7dG%2BwpDk7ADEMkxE2qidmESBGLreK-GgCUdHhD1DkHw7zd9w@mail.gmail.com> <CAG7dG%2BxBoL63mWG8cK%2BFh2jRyfBOsxXfWt4aWtwpyrXt3aOW_g@mail.gmail.com> <CAG7dG%2BzReo7M1o=MUnKA=H1BC7XohF-uFR73ucRN8oyc-urUkQ@mail.gmail.com> <CABx9NuSwHnvWHqoYoJpTwpFPaEgjgfPxzsC%2BfZQF-D3TY9hH%2BQ@mail.gmail.com> <CAG7dG%2By=t4iinhQZxFmGjN3fq7QGGTp5F=rdwrQuiGux_T=YHQ@mail.gmail.com> <CABx9NuQ8an-=44cva6nDp6NoPSgewjcoi%2B3mVNfCzxntfzjjNA@mail.gmail.com> <CAG7dG%2Bx5ex2jYgh8EQe2WQEmycZHOTJgG4AoWaUa6ARw_8nVcw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
BTW. You may also want to check out this patch:
https://reviews.freebsd.org/D4338  with SMP support for HW watchpoints
on ARMv6/v7

Best regards
zbb

2015-12-02 13:18 GMT+01:00 Zbigniew Bodek <zbb@semihalf.com>:
> Hello Russel,
>
> I think you are doing something wrong since I've just downloaded the
> latest patch from Phabricator, applied it on r291486 and built for
> IMX6 successfully (with and without DDB option).
> Did you use the latest patch?
>
> Best regards
> zbb
>
> 2015-12-02 8:19 GMT+01:00 Russell Haley <russ.haley@gmail.com>:
>> Okay, so I wasn't too successfull:
>>
>> What I did:
>> - update to latest revision (291642)
>> - I couldn't get installworld to complete (separate email). Instead, I
>> downloaded the current image for the hummingboard and mounted the image and
>> was preparing to run installkernel
>> - I ran buildkernel to success
>> - I applied the patch. It applied successfully
>> - I ran buildkernel again and got the following error:
>>
>> cc  -c -O -pipe  -g -nostdinc  -I. -I/usr/src/sys
>> -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL
>> -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a
>> -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls
>> -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith
>> -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
>> -D__printf__=__freebsd_kprintf__  -Wmissing-include-dirs
>> -fdiagnostics-show-option  -Wno-unknown-pragmas
>> -Wno-error-tautological-compare -Wno-error-empty-body
>> -Wno-error-parentheses-equality -Wno-error-unused-function
>> -Wno-error-pointer-sign -Wno-error-shift-negative-value  -mfpu=none
>> -std=iso9899:1999 -Werror  /usr/src/sys/arm/arm/db_trace.c
>> /usr/src/sys/arm/arm/db_trace.c:135:2: error: implicit declaration of
>> function 'dbg_show_watchpoint' is invalid in C99
>> [-Werror,-Wimplicit-function-declaration]
>>         dbg_show_watchpoint();
>>         ^
>> /usr/src/sys/arm/arm/db_trace.c:135:2: note: did you mean
>> 'db_set_watchpoints'?
>> /usr/src/sys/ddb/ddb.h:216:7: note: 'db_set_watchpoints' declared here
>> void            db_set_watchpoints(void);
>>                 ^
>> /usr/src/sys/arm/arm/db_trace.c:142:10: error: implicit declaration of
>> function 'dbg_remove_watchpoint' is invalid in C99
>> [-Werror,-Wimplicit-function-declaration]
>>         return (dbg_remove_watchpoint(addr, size));
>>                 ^
>> /usr/src/sys/arm/arm/db_trace.c:142:10: note: did you mean
>> 'dbg_show_watchpoint'?
>> /usr/src/sys/arm/arm/db_trace.c:135:2: note: 'dbg_show_watchpoint' declared
>> here
>>         dbg_show_watchpoint();
>>         ^
>> /usr/src/sys/arm/arm/db_trace.c:149:10: error: implicit declaration of
>> function 'dbg_setup_watchpoint' is invalid in C99
>> [-Werror,-Wimplicit-function-declaration]
>>         return (dbg_setup_watchpoint(addr, size, HW_WATCHPOINT_RW));
>>                 ^
>> /usr/src/sys/arm/arm/db_trace.c:149:43: error: use of undeclared identifier
>> 'HW_WATCHPOINT_RW'
>>         return (dbg_setup_watchpoint(addr, size, HW_WATCHPOINT_RW));
>>                                                  ^
>> 4 errors generated.
>> *** Error code 1
>>
>> Stop.
>> make[2]: stopped in /usr/obj/arm.armv6/usr/src/sys/IMX6
>> *** Error code 1
>>
>> Stop.
>> make[1]: stopped in /usr/src
>> *** Error code 1
>>
>> Stop.
>> make: stopped in /usr/src
>> ----------------------------------------------
>>
>> I ran buildkernel in various configurations (with and without -DNO_CLEAN,
>> with and without -j10) and received variations on the same error. The last
>> one I tried was without NO_CLEAN and single threaded:
>>
>>
>> ctfconvert -L VERSION -g cpufunc_asm.o
>> cc -c -x assembler-with-cpp -DLOCORE -O -pipe  -g -nostdinc  -I.
>> -I/usr/src/sys -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include
>> -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a
>> -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls
>> -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith
>> -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
>> -D__printf__=__freebsd_kprintf__  -Wmissing-include-dirs
>> -fdiagnostics-show-option  -Wno-unknown-pragmas
>> -Wno-error-tautological-compare -Wno-error-empty-body
>> -Wno-error-parentheses-equality -Wno-error-unused-function
>> -Wno-error-pointer-sign -Wno-error-shift-negative-value  -mfpu=none
>> -std=iso9899:1999  -Werror /usr/src/sys/arm/arm/cpufunc_asm_armv7.S
>> ctfconvert -L VERSION -g cpufunc_asm_armv7.o
>> cc  -c -O -pipe  -g -nostdinc  -I. -I/usr/src/sys
>> -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL
>> -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a
>> -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls
>> -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith
>> -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
>> -D__printf__=__freebsd_kprintf__  -Wmissing-include-dirs
>> -fdiagnostics-show-option  -Wno-unknown-pragmas
>> -Wno-error-tautological-compare -Wno-error-empty-body
>> -Wno-error-parentheses-equality -Wno-error-unused-function
>> -Wno-error-pointer-sign -Wno-error-shift-negative-value  -mfpu=none
>> -std=iso9899:1999 -Werror  /usr/src/sys/arm/arm/cpuinfo.c
>> ctfconvert -L VERSION -g cpuinfo.o
>> cc -c -x assembler-with-cpp -DLOCORE -O -pipe  -g -nostdinc  -I.
>> -I/usr/src/sys -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include
>> -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a
>> -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls
>> -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith
>> -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
>> -D__printf__=__freebsd_kprintf__  -Wmissing-include-dirs
>> -fdiagnostics-show-option  -Wno-unknown-pragmas
>> -Wno-error-tautological-compare -Wno-error-empty-body
>> -Wno-error-parentheses-equality -Wno-error-unused-function
>> -Wno-error-pointer-sign -Wno-error-shift-negative-value  -mfpu=none
>> -std=iso9899:1999  -Werror /usr/src/sys/arm/arm/cpu_asm-v6.S
>> ctfconvert -L VERSION -g cpu_asm-v6.o
>> cc  -c -O -pipe  -g -nostdinc  -I. -I/usr/src/sys
>> -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL
>> -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a
>> -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls
>> -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith
>> -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
>> -D__printf__=__freebsd_kprintf__  -Wmissing-include-dirs
>> -fdiagnostics-show-option  -Wno-unknown-pragmas
>> -Wno-error-tautological-compare -Wno-error-empty-body
>> -Wno-error-parentheses-equality -Wno-error-unused-function
>> -Wno-error-pointer-sign -Wno-error-shift-negative-value  -mfpu=none
>> -std=iso9899:1999 -Werror  /usr/src/sys/arm/arm/db_disasm.c
>> ctfconvert -L VERSION -g db_disasm.o
>> cc  -c -O -pipe  -g -nostdinc  -I. -I/usr/src/sys
>> -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL
>> -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a
>> -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls
>> -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith
>> -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
>> -D__printf__=__freebsd_kprintf__  -Wmissing-include-dirs
>> -fdiagnostics-show-option  -Wno-unknown-pragmas
>> -Wno-error-tautological-compare -Wno-error-empty-body
>> -Wno-error-parentheses-equality -Wno-error-unused-function
>> -Wno-error-pointer-sign -Wno-error-shift-negative-value  -mfpu=none
>> -std=iso9899:1999 -Werror  /usr/src/sys/arm/arm/db_interface.c
>> ctfconvert -L VERSION -g db_interface.o
>> cc  -c -O -pipe  -g -nostdinc  -I. -I/usr/src/sys
>> -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL
>> -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a
>> -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls
>> -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith
>> -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
>> -D__printf__=__freebsd_kprintf__  -Wmissing-include-dirs
>> -fdiagnostics-show-option  -Wno-unknown-pragmas
>> -Wno-error-tautological-compare -Wno-error-empty-body
>> -Wno-error-parentheses-equality -Wno-error-unused-function
>> -Wno-error-pointer-sign -Wno-error-shift-negative-value  -mfpu=none
>> -std=iso9899:1999 -Werror  /usr/src/sys/arm/arm/db_trace.c
>> /usr/src/sys/arm/arm/db_trace.c:135:2: error: implicit declaration of
>> function 'dbg_show_watchpoint' is invalid in C99
>> [-Werror,-Wimplicit-function-declaration]
>>         dbg_show_watchpoint();
>>         ^
>> /usr/src/sys/arm/arm/db_trace.c:135:2: note: did you mean
>> 'db_set_watchpoints'?
>> /usr/src/sys/ddb/ddb.h:216:7: note: 'db_set_watchpoints' declared here
>> void            db_set_watchpoints(void);
>>                 ^
>> /usr/src/sys/arm/arm/db_trace.c:142:10: error: implicit declaration of
>> function 'dbg_remove_watchpoint' is invalid in C99
>> [-Werror,-Wimplicit-function-declaration]
>>         return (dbg_remove_watchpoint(addr, size));
>>                 ^
>> /usr/src/sys/arm/arm/db_trace.c:142:10: note: did you mean
>> 'dbg_show_watchpoint'?
>> /usr/src/sys/arm/arm/db_trace.c:135:2: note: 'dbg_show_watchpoint' declared
>> here
>>         dbg_show_watchpoint();
>>         ^
>> /usr/src/sys/arm/arm/db_trace.c:149:10: error: implicit declaration of
>> function 'dbg_setup_watchpoint' is invalid in C99
>> [-Werror,-Wimplicit-function-declaration]
>>         return (dbg_setup_watchpoint(addr, size, HW_WATCHPOINT_RW));
>>                 ^
>> /usr/src/sys/arm/arm/db_trace.c:149:43: error: use of undeclared identifier
>> 'HW_WATCHPOINT_RW'
>>         return (dbg_setup_watchpoint(addr, size, HW_WATCHPOINT_RW));
>>                                                  ^
>> 4 errors generated.
>> *** Error code 1
>>
>> Stop.
>> make[2]: stopped in /usr/obj/arm.armv6/usr/src/sys/IMX6
>> *** Error code 1
>>
>> Stop.
>> make[1]: stopped in /usr/src
>> *** Error code 1
>>
>> Stop.
>> make: stopped in /usr/src
>>
>>
>> So if it's NOT an undeclared identifier, then let me know what I've done
>> wrong.
>>
>> Cheers,
>> Russ
>>
>>
>> On Tue, Dec 1, 2015 at 3:28 AM, Zbigniew Bodek <zbb@semihalf.com> wrote:
>>>
>>> Hello Russell,
>>>
>>> That will be a good sign if it doesn't explode (if you see undefined
>>> instruction on boot then there's something wrong).
>>> More extended description what you can do with HW watchpoints is in
>>> this thread. For example you can check:
>>> https://lists.freebsd.org/pipermail/freebsd-arm/2015-November/012724.html
>>>
>>> Best regards
>>> zbb
>>>
>>> 2015-11-30 19:03 GMT+01:00 Russell Haley <russ.haley@gmail.com>:
>>> > Cool. I have a hummingboard (iMX6). Do I need to know what I'm looking
>>> > for
>>> > or am I just making sure it doesn't explode?
>>> >
>>> > Russ
>>> >
>>> > On Mon, Nov 30, 2015 at 6:41 AM, Zbigniew Bodek <zbb@semihalf.com>
>>> > wrote:
>>> >>
>>> >> Hello again,
>>> >>
>>> >> It seems that this is the last chance to test this patch on other
>>> >> platforms than Rpi, Arndale and Pandaboard.
>>> >> Please check out this https://reviews.freebsd.org/D4037
>>> >> I will be grateful if you had  a chance to test this on something else
>>> >> than the above mentioned.
>>> >>
>>> >> Best regards
>>> >> zbb
>>> >>
>>> >> 2015-10-31 17:21 GMT+01:00 Zbigniew Bodek <zbb@semihalf.com>:
>>> >> > Hello again,
>>> >> >
>>> >> > I should have post some more information about testing this patch.
>>> >> > Here
>>> >> > it goes:
>>> >> > ------------------------------------------------------------------
>>> >> > One can enter kernel debugger by one of those:
>>> >> >
>>> >> > press: ~, ctrl + b
>>> >> > or
>>> >> > type: sysctl -w debug.kdb.enter=1
>>> >> >
>>> >> > You can then set a HW watchpoint on any memory location at <address>
>>> >> > by invoking following command in KDB:
>>> >> > db> hwatch <address>, <size>
>>> >> >
>>> >> > <size> parameter is optional, the default is 4.
>>> >> >
>>> >> > To display watchpoints:
>>> >> > db> show watch
>>> >> >
>>> >> > To remove watchpoint:
>>> >> > db> dhwatch <address>
>>> >> >
>>> >> > Press "c" to continue.
>>> >> >
>>> >> > ------------------------------------------------------------------
>>> >> > While in KDB you can step through the kernel code using "s" BUT you
>>> >> > need to apply a dependent patch: https://reviews.freebsd.org/D4036
>>> >> > otherwise you will cause the kernel panic.
>>> >> >
>>> >> > Thanks again
>>> >> > zbb
>>> >> >
>>> >> > 2015-10-30 17:25 GMT+01:00 Zbigniew Bodek <zbb@semihalf.com>:
>>> >> >> Hello,
>>> >> >>
>>> >> >> We would like to add HW watchpoints and HW single step support to
>>> >> >> ARMv6
>>> >> >> kernel.
>>> >> >> Please check this review: https://reviews.freebsd.org/D4037
>>> >> >>
>>> >> >> Since there are differences between debug architectures on ARM (v6,
>>> >> >> v6.1, v7, v7.1) I would like to ask for some testing on your
>>> >> >> machines.
>>> >> >> I was able to test this on Pandaboard and Arndale but please check
>>> >> >> whether this works on your targets as well.
>>> >> >>
>>> >> >> Rise a red flag if you see any issues or in worst case scenario -
>>> >> >> "undefined instruction" error.
>>> >> >>
>>> >> >> Best regards
>>> >> >> zbb
>>> >> _______________________________________________
>>> >> freebsd-arm@freebsd.org mailing list
>>> >> https://lists.freebsd.org/mailman/listinfo/freebsd-arm
>>> >> To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org"
>>> >
>>> >
>>
>>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAG7dG%2ByZH=RcaEKo5c6DPwoeTaQchtzduXp3MjmLUKarpyyZrw>