User Tools

Site Tools


lkmp:lkmp_project_list

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lkmp:lkmp_project_list [2020/02/25 02:20]
ShuahKhanLF
lkmp:lkmp_project_list [2020/06/23 16:10] (current)
ShuahKhanLF
Line 15: Line 15:
 **Mentor: [[brendanhiggins@google.com|Brendan Higgins]]** **Mentor: [[brendanhiggins@google.com|Brendan Higgins]]**
  
-**Number of candidates ​applying ​for this project: ​0**+**Number of candidates ​selected ​for this project: ​1** 
 + 
 +===== Dropwatch system enhancements ===== 
 +Dropwatch is a kernel feature that was implemented approximately 7 years ago. It makes use of kernel kprobes to monitor all locations in the kernel where network frames (specifically skb structures) are freed. ​ Using a kprobe, dropwatch records a histogram of the program counters where these skb free operations were preformed, and reports that information to a user space application which presents the information in a human readable form, allowing for fine grained monitoring of dropped packets with little to no latency, or ambiguity of cause. 
 + 
 +Dropwatch consists of 3 primary components:​ 
 +1) Kprobes, used to intercept calls to kfree_skb for the purpose of tracking 
 +where packets are dropped 
 + 
 +2) A Netlink protocol, used to allow user space to control the activation of 
 +this feaure, and to receive the results of dropped packet reports 
 + 
 +3) A user space application,​ used to drive the Netlink protocol 
 + 
 +**Proposal** 
 +I would like to propose that my mentee augment this kernel feature to create a dummy network interface, which exists for the purpose of cloning and queuing packets which otherwise would have been dropped by the kernel. ​ Adding this interface and queuing dropped packets to it, will allow for existing other userspace applications (like tcpdump or wireshark), to physically see and interpret those frames which would otherwise have been discarded by the kernel, so that developers can better understand why packets are being dropped, and potentially prevent the action in the future. 
 + 
 +**Implementation details** 
 +To accomplish this the mentee will need to: 
 +a) Augment the kernel code to add netlink messages to control the creation and 
 +teardown of an ethernet interface 
 + 
 +b) Enhance the dropwatch kernel kprobes to enqueue dropped frames to the 
 +interface in (a) when it exists 
 + 
 +c) test the additional code to verify that it works. 
 + 
 +**Mentor: [[nhorman@redhat.com|Neil Horman]]** 
 + 
 +**Number of candidates selected for this project: 1** 
 + 
 +===== PCI: Remove legacy power management ===== 
 +The current generic power management framework using ''​struct dev_pm_ops''​ 
 +was introduced over ten years ago.  The previous "​legacy"​ framework 
 +uses ''​.suspend()''​ and ''​.resume()''​ methods in the ''​struct pci_driver''​. ​ We 
 +should convert all drivers from the legacy framework to the generic 
 +framework and remove the legacy code from the PCI core.  Examples of 
 +doing this include: 
 + 
 +  * [[https://​git.kernel.org/​linus/​8249c47c6ba4|8249c47c6ba4 ("​fm10k:​ use generic PM hooks instead of legacy PCIe power hooks"​)]] 
 +  * [[https://​git.kernel.org/​linus/​0e5d3da40055|0e5d3da40055 ("​i40e:​ use newer generic PM support instead of legacy PM callbacks"​)]] 
 +  * [[https://​git.kernel.org/​linus/​226e6b866d74|226e6b866d74 ("​gpio:​ pch: Convert to dev_pm_ops"​)]] 
 + 
 +The drivers can be converted one-by-one and the PCI core code removed 
 +when it is no longer used. 
 + 
 +**Mentor: [[bjorn@helgaas.com|Bjorn Helgaas]]** 
 + 
 +**Number of candidates selected for this project: 1** 
 + 
 +===== PCI: Hardening - Fix static analysis errors ===== 
 + 
 +Explore kernel static analysis checkers CocciCheck, Coverity, Sparse, and Smatch. Learn how to run them to find static analysis problems in the PCI sub-system and fix the reported errors. ​    
 + 
 +**Mentor: [[bjorn@helgaas.com|Bjorn Helgaas]]** 
 + 
 +**Number of candidates selected for this project: 1** 
 + 
 +===== Fall 2020 Projects - Apply from CommunityBridge =====
  
 ===== Add KUnit Support for Parameterized Testing ===== ===== Add KUnit Support for Parameterized Testing =====
Line 61: Line 119:
 **Number of candidates applying for this project: 0** **Number of candidates applying for this project: 0**
  
 +===== Add support for Latency Tolerance Reporting _DSM =====
 +Latency Tolerance Reporting is used to help manage ASPM (Active State
 +Power Management). ​ Some of the LTR values are platform-dependent and
 +must be learned from platform firmware. ​ Linux currently does not ask
 +firmware for this information. ​ I don't know exactly how this
 +information needs to be incorporated into the ASPM support, but I think
 +it's something we should figure out.  See the PCI Firmware Spec, r3.2,
 +sec 4.6.6.
  
 +**Mentor: [[bjorn@helgaas.com|Bjorn Helgaas]]**
 +
 +**Number of candidates applying for this project: 0**
 +
 +
 +===== For a future session =====
 +
 +===== Add PR_SET_VMA support to Linux Kernel =====
 +PR_SET_VMA mechanism is used heavily in Android for naming memory regions. It is passed to the prctl(2) system call along with the range of addresses to be named. The name appears in /​proc/​pid/​maps and can be used to identify memory regions for debugging and accounting purposes. The patch has been carried in the Android tree for several years. The patch needs to be adapted to mainline, improved and finally upstreamed. This project will give the mentee a good understanding of virtual memory area structures in the Linux kernel as the name for the memory region is stored in these structures and there are various cases where a memory map needs to be split or merged depending on its name compared to its immediate neighbors.
 +
 +**Mentor: [[joel@joelfernandes.org|Joel Fernandes]]**
 +
 +**Number of candidates applying for this project: 2**
 +
 +===== Linux kernel trace events in pstore =====
 +Pstore is a subsystem in the Linux kernel that is used to store kernel logs which can retrieved after a machine warm-reboots.
 +
 +Currently, during ftrace tracing, ftrace events in the kernel are lost when a machine hard-locks up. There is a need for writing these events into the pstore so that after a lock up, the trace events that led to the crash can be retrieved from the Pstore after a warm reboot. This has to be done in a
 +scalable way so that tracing a live system does not impact performance of the system -- ftrace is extremely fast. Initial patches posted to write and retrieve events to/from pstore are not scalable due to locking and other issues. Introducing a scalable approach will open up more possibilities for crash analysis. Prototypes from Qualcomm (Sai Prakash) are available as a reference. These prototypes are not merge ready and suffer from scalablity issues but could be used as a starting point. Sai Prakash is presenting work done on the initial set of patches at Linaro Connect: https://​linaroconnectsandiego.sched.com/​event/​Sue7/​event-tracing-and-pstore-with-a-pinch-of-dynamic-debug
 +but further work or re-design of the approach is needed.
 +
 +**Mentor: [[joel@joelfernandes.org|Joel Fernandes]]**
 +
 +**Number of candidates applying for this project: 0**
  
 ===== Compile cross platforms drivers when COMPILE_TEST set ===== ===== Compile cross platforms drivers when COMPILE_TEST set =====
Line 68: Line 158:
  
 **Mentor: [[bankarsandhya512@gmail.com| Sandhya Bankar]]** **Mentor: [[bankarsandhya512@gmail.com| Sandhya Bankar]]**
 +
 +**Number of candidates applying for this project: 0**
 +===== Linux Media - Convert Videobuf v1 to Videobus v2 (9 projects) =====
 +Convert A requirement is that the developer has to have access to devices with use VB1 - either directly or we need to coordinate with someone with has the hardware for testing purposes. There are ~9 drivers that could be converted. Each driver is an independent project and will require 9 mentees.
 +
 +**Mentor: [[mchehab@kernel.org| Mauro Chehab]]**
 +
 +**Number of candidates applying for this project: 0**
 +
 +===== Documentation - Convert (or add) kAPI/uAPI kerneldoc comments =====
 +Convert (or add) kAPI/uAPI kerneldoc comments, replacing or complementing existing .rst files
 +
 +**Mentor: [[mchehab@kernel.org| Mauro Chehab]]**
 +
 +**Number of candidates applying for this project: 0**
 +
 +===== Documentation - Update obsolete .rst files =====
 +Update obsolete documentation files.
 +
 +**Mentor: [[mchehab@kernel.org| Mauro Chehab]]**
  
 **Number of candidates applying for this project: 0** **Number of candidates applying for this project: 0**
  
 +===== For a future session - PCI tasks (don't have the scope for being projects) =====
 ===== PCI: Align ''​pcie_capability_read_word()''​ error returns with other config read accessors ===== ===== PCI: Align ''​pcie_capability_read_word()''​ error returns with other config read accessors =====
 The ''​pci_read_config_word()''​ and similar interfaces set ''​*val = ~0''​ when The ''​pci_read_config_word()''​ and similar interfaces set ''​*val = ~0''​ when
Line 104: Line 215:
  
   * if we exit the loop because ''​reg >= MAX_MCE_REGS'',​ we leak the last reference   * if we exit the loop because ''​reg >= MAX_MCE_REGS'',​ we leak the last reference
- 
-**Mentor: [[bjorn@helgaas.com|Bjorn Helgaas]]** 
- 
-**Number of candidates applying for this project: 0** 
- 
-===== PCI: Remove legacy power management ===== 
-The current generic power management framework using ''​struct dev_pm_ops''​ 
-was introduced over ten years ago.  The previous "​legacy"​ framework 
-uses ''​.suspend()''​ and ''​.resume()''​ methods in the ''​struct pci_driver''​. ​ We 
-should convert all drivers from the legacy framework to the generic 
-framework and remove the legacy code from the PCI core.  Examples of 
-doing this include: 
- 
-  * [[https://​git.kernel.org/​linus/​8249c47c6ba4|8249c47c6ba4 ("​fm10k:​ use generic PM hooks instead of legacy PCIe power hooks"​)]] 
-  * [[https://​git.kernel.org/​linus/​0e5d3da40055|0e5d3da40055 ("​i40e:​ use newer generic PM support instead of legacy PM callbacks"​)]] 
-  * [[https://​git.kernel.org/​linus/​226e6b866d74|226e6b866d74 ("​gpio:​ pch: Convert to dev_pm_ops"​)]] 
- 
-The drivers can be converted one-by-one and the PCI core code removed 
-when it is no longer used. 
  
 **Mentor: [[bjorn@helgaas.com|Bjorn Helgaas]]** **Mentor: [[bjorn@helgaas.com|Bjorn Helgaas]]**
Line 139: Line 231:
 **Number of candidates applying for this project: 0** **Number of candidates applying for this project: 0**
  
-===== Add support for Latency Tolerance Reporting _DSM ===== 
-Latency Tolerance Reporting is used to help manage ASPM (Active State 
-Power Management). ​ Some of the LTR values are platform-dependent and 
-must be learned from platform firmware. ​ Linux currently does not ask 
-firmware for this information. ​ I don't know exactly how this 
-information needs to be incorporated into the ASPM support, but I think 
-it's something we should figure out.  See the PCI Firmware Spec, r3.2, 
-sec 4.6.6. 
- 
-**Mentor: [[bjorn@helgaas.com|Bjorn Helgaas]]** 
- 
-**Number of candidates applying for this project: 0** 
- 
-===== Fall 2020 Projects ===== 
-===== Add PR_SET_VMA support to Linux Kernel ===== 
-PR_SET_VMA mechanism is used heavily in Android for naming memory regions. It is passed to the prctl(2) system call along with the range of addresses to be named. The name appears in /​proc/​pid/​maps and can be used to identify memory regions for debugging and accounting purposes. The patch has been carried in the Android tree for several years. The patch needs to be adapted to mainline, improved and finally upstreamed. This project will give the mentee a good understanding of virtual memory area structures in the Linux kernel as the name for the memory region is stored in these structures and there are various cases where a memory map needs to be split or merged depending on its name compared to its immediate neighbors. 
- 
-**Mentor: [[joel@joelfernandes.org|Joel Fernandes]]** 
- 
-**Number of candidates applying for this project: 2** 
- 
-===== Linux kernel trace events in pstore ===== 
-Pstore is a subsystem in the Linux kernel that is used to store kernel logs which can retrieved after a machine warm-reboots. 
  
-Currently, during ftrace tracing, ftrace events in the kernel are lost when a machine hard-locks up. There is a need for writing these events into the pstore so that after a lock up, the trace events that led to the crash can be retrieved from the Pstore after a warm reboot. This has to be done in a +===== Spring 2020 Projects - completed ​=====
-scalable way so that tracing a live system does not impact performance of the system -- ftrace is extremely fast. Initial patches posted to write and retrieve events to/from pstore are not scalable due to locking and other issues. Introducing a scalable approach will open up more possibilities for crash analysis. Prototypes from Qualcomm (Sai Prakash) are available as a reference. These prototypes are not merge ready and suffer from scalablity issues but could be used as a starting point. Sai Prakash is presenting work done on the initial set of patches at Linaro Connect: https://​linaroconnectsandiego.sched.com/​event/​Sue7/​event-tracing-and-pstore-with-a-pinch-of-dynamic-debug +
-but further work or re-design of the approach is needed. +
- +
-**Mentor: [[joel@joelfernandes.org|Joel Fernandes]]** +
- +
-**Number of candidates applying for this project: 2** +
- +
-===== Linux Media - Convert Videobuf v1 to Videobus v2 (9 projects) ===== +
-Convert A requirement is that the developer has to have access to devices with use VB1 - either directly or we need to coordinate with someone with has the hardware for testing purposes. There are ~9 drivers that could be converted. Each driver is an independent project and will require 9 mentees. +
- +
-**Mentor: [[mchehab@kernel.org| Mauro Chehab]]** +
- +
-**Number of candidates applying for this project: 0** +
-===== Documentation - Convert (or add) kAPI/uAPI kerneldoc comments ===== +
-Convert (or add) kAPI/uAPI kerneldoc comments, replacing or complementing existing .rst files +
- +
-**Mentor: [[mchehab@kernel.org| Mauro Chehab]]** +
- +
-**Number of candidates applying for this project: 1** +
- +
-===== Documentation - Update obsolete .rst files ===== +
-Update obsolete documentation files. +
- +
-**Mentor: [[mchehab@kernel.org| Mauro Chehab]]** +
- +
-**Number of candidates applying for this project: 0** +
- +
-===== Spring 2020 Projects - in progress ​=====+
 ===== Linux dev-tools - Handling Complex Types and Attributes in Coccinelle ===== ===== Linux dev-tools - Handling Complex Types and Attributes in Coccinelle =====
 Coccinelle, developed by Julia Lawall and her group, is a program matching and transformation engine which provides the language SmPL (Semantic Patch Language) for specifying desired matches and transformations in C code. The project proposal would be to improve the management of complex types and attributes (const, <​nowiki>​__user</​nowiki>,​ etc) in the program matching and transformation tool Coccinelle. Currently, complex types are represented incorrectly,​ which makes it impossible to match against them in a general way. Various kinds of attributes are increasingly used in Linux kernel code, and it is important to be able to check these annotations and add them where they are missing. This project is relevant to Linux, Zephyr and many more applications. Coccinelle, developed by Julia Lawall and her group, is a program matching and transformation engine which provides the language SmPL (Semantic Patch Language) for specifying desired matches and transformations in C code. The project proposal would be to improve the management of complex types and attributes (const, <​nowiki>​__user</​nowiki>,​ etc) in the program matching and transformation tool Coccinelle. Currently, complex types are represented incorrectly,​ which makes it impossible to match against them in a general way. Various kinds of attributes are increasingly used in Linux kernel code, and it is important to be able to check these annotations and add them where they are missing. This project is relevant to Linux, Zephyr and many more applications.
Line 214: Line 255:
  
 **Number of candidates working on this project: 3** **Number of candidates working on this project: 3**
 +
 +
  
 ===== Linux Media - Virtual DVB test driver ===== ===== Linux Media - Virtual DVB test driver =====
lkmp/lkmp_project_list.1582597232.txt.gz · Last modified: 2020/02/25 02:20 by ShuahKhanLF