On Mon, Jan 15, 2018 at 4:59 AM, Stefan Hajnoczi <stefanha@xxxxxxxxx> wrote: > On Thu, Jan 11, 2018 at 03:25:56PM -0800, Alistair Francis wrote: >> On Wed, Jan 10, 2018 at 4:52 AM, Stefan Hajnoczi <stefanha@xxxxxxxxx> wrote: >> > On Tue, Jan 9, 2018 at 9:45 PM, Alistair Francis <alistair23@xxxxxxxxx> wrote: >> >> Can anyone who has done this before chime in. >> >> >> >> What do you think about getting someone to cleanup and improve the GDB >> >> support in QEMU? Would that be the right difficulty of task for a GSoC >> >> project? >> > >> > There is not enough information to give feedback on whether this >> > project idea is suitable. What are the specific tasks you'd like the >> > student to work on? >> > >> > In general, I'm sure there are well-defined 12-week project ideas >> > around the GDB stub. New features are easy to propose and are usually >> > well-defined (e.g. implement these commands that are documented in the >> > GDB protocol documentation). Cleaning up code is less clear and it >> > would depend on exactly what needs to be done. Interns will not have >> > a background in the QEMU codebase and may not be able to make >> > judgements about how to structure things, so I would be more careful >> > about refactoring/cleanup projects. >> > >> > Please see my talk about QEMU GSoC for guidelines on project ideas: >> > https://www.youtube.com/watch?v=xNVCX7YMUL8&t=19m11s >> > http://vmsplice.net/~stefan/stefanha-kvm-forum-2016.pdf >> >> That helps a lot, thanks for that. >> >> So for a more concrete solution, how would adding support for multi >> CPU support to the GDB server sound? >> >> This would allow GDB debugging for the A53 and the R5 on the Xilinx >> ZynqMP for example. This is something we have in the Xilinx tree, but >> it is in no state to go upstream and really needs to be re-write to be >> upstreamable and more generic. > > Excellent. Then they'll already have an idea of "how" it can be > achieved but have the freedom to write code that is most suitable for > upstream. That is a good starting point for a project. > > Here is the project idea template: > > === TITLE === > > '''Summary:''' Short description of the project > > Detailed description of the project. > > '''Links:''' > * Wiki links to relevant material > * External links to mailing lists or web sites > > '''Details:''' > * Skill level: beginner or intermediate or advanced > * Language: C > * Mentor: Email address and IRC nick > * Suggested by: Person who suggested the idea > > Once you have written down the project idea, please post it under > Internships/ProjectIdeas/MultiCPUGDBStub and then add it to the > Google_Summer_of_Code_2018 wiki page using the > "{{:Internships/ProjectIdeas/MultiCPUGDBStub}}" inlining syntax. > > Or if you prefer, just reply with the project idea to this email and > I'll post it on the wiki for you. > > Can you think of a co-mentor who would be willing to participate? It > makes internships easier when there are multiple mentors - less stress > for mentors, faster communication for students. Yep, here is my proposal. I don't have wiki access, so I can't add it myself. I think Philippe would be a good co-mentor, if he is happy to. I am also welcome to mentor other ideas, it doesn't have to be this one. === Multi-CPU cluster support for GDB server in QEMU === There are many examples in modern computing where multiple CPU clusters are grouped together in a single SoC. This is common in the ARM world especially. There are numerous examples such as ARM's big.LITTLE implementations and Xilinx's 4xA53s and 2xR5s on the ZynqMP SoC. The goal of this task is to add support to the GDB server to allow users to debug across these clusters. This is another step towards single binary QEMU as well. Detailed description of the project. Xilinx has an out of tree implementation that can be used as a starting point. Work will need to be done on top of this to prepare it for upstream submission and to ensure the implementation is more generic. This will mostly involve extending GDB server to tell GDB about different architectures and then allow the user to swap between them. The Xilinx implementation can be seen here: https://github.com/Xilinx/qemu/blob/master/gdbstub.c There has been some steps in preparing the work to go upstream, which can be seen here: https://github.com/Xilinx/qemu/tree/mainline/alistair/gdb '''Details:''' * Skill level: advanced * Language: C * Mentor: alistair23@xxxxxxxxx, Philippe? * Suggested by: Alistair Francis > > Stefan