Port-prep archive

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

Re: Kernel Options



On 11/19/19 6:57 PM, T wrote:
options KGDB
#This will lead to compile errors if enabled. I was able to track down the errors to some changes that were made that did not take OEA type machines into consideration. I was able to move some IFDEF tags to fix, although there was one error I could not figure out, but was able to bypass in order to get the kernel to compile. I'll follow up with more information/patch when I return to this issue.

Just an update on this specific issue, I was able to fix the error that caused the compile errors if the option was enabled, but upon closer inspection of the source code, the underlying issue is that KGDB was never fully added to this port. By cross-examining the source code against other ports, there appears to be a KGDB function call that is missing in PReP port source code, that is included in the other ports with working KGDB. Some ports have more complicated code that is tied to machine specific hardware, like in the macppc port, but in contrast, the i386 port seems more straight forward, as is the evbppc port.

There appears to be powerpc common code for KGDB, as seen here: "https://nxr.netbsd.org/xref/src/sys/arch/powerpc/powerpc/kgdb_machdep.c";, but the PReP port does not call it. While investigating other ports, there appear to be two main factors in getting KGDB to work, initializing the COM port and then the actual KGDB code. The KGDB code looks to be there, as shown in the link above, but I'm not quite sure about the code for initializing the COM port. If looking at similar KGDB code for evbppc, setting it up is done through machine independent code via "/src/sys/dev/ic/com.c" using the function "com_kgdb_attach". Both the evbppc port and PReP port look similar in how they do that, so perhaps using the KGDB code for enabling it from evbppc would also work for PReP. Scroll down to the bottom of both of these files and you can see how similar they are, the evbppc file has the KGDB code, PReP does not:
"https://nxr.netbsd.org/xref/src/sys/arch/evbppc/walnut/consinit.c";
"https://nxr.netbsd.org/xref/src/sys/arch/prep/prep/consinit.c";

For trying to figure out where KGDB should be called during initialization with PReP port, this file in the powerpc common code seems to be it, it's where DDB is called if the option is enabled: "https://nxr.netbsd.org/xref/src/sys/arch/powerpc/oea/prep_machdep.c";
Some other ports look like this:
"https://nxr.netbsd.org/xref/src/sys/arch/i386/i386/machdep.c"; line 1412, it has KGDB, but boot process is significantly different for x86 vs PowerPC (PReP) "https://nxr.netbsd.org/xref/src/sys/arch/evbppc/virtex/machdep.c"; line 154, it has KGDB "https://nxr.netbsd.org/xref/src/sys/arch/evbppc/walnut/machdep.c"; line 202 area, although KGDB is not included.

My experience with this sort of stuff is rather shallow, so if anyone knowledgeable can offer any suggestions, it would be appreciated. I'll keep tinkering with it and see if something makes it work in the meantime.

Home | Main Index | Thread Index | Old Index