Thursday, October 22, 2008 Version 3 The following major milestones have been identified by moving the initial tasks around into deliverable pieces. This document assume the mnemonic, TuxRx is the name given to the Linux kernel running on one of Sibyte 1480 processor sockets. 1.0 Milestone 1: Linux kernel, Mgmt-Bus, and IPC messaging between SSC and TuxRx ------------ This milestone covers the tasks resulting in running Linux kernels on both the SSC and TuxRx sending/receiving messages via the mgmt-bus driver and protocol modules. In addition basic IP support and NFS communication between the SSC and TuxRx are supported. 1.1 Stock 2.6.26 Linux ported and on the two socket Sibyte 1480 hardware. With the port of 2.6.22 onto the SSC, this should be a very direct task on the order of a few days best case. BEST_CASE_ESTIMATE: 2 Days 1.2 Porting SSC Linux mgmt-bus driver and NET_EEE modules onto TuxRx Linux. BEST_CASE_ESTIMATE: 2 Days 1.3 Code extensions to the mgmt-bus driver and modify NET_EEE module to handle IP packets to/from SSC. This allows a Point-to-point link from TuxRx to SSC supporting TCP/IP and NFS traffic. BEST_CASE_ESTIMATE: 3 Days 1.4 Test IPC between the SSC and TuxRx Linux using the mgmt-bus PCI driver and EEE protocol module. This validates the proper working of the DMA and interrupts on both ends. BEST_CASE_ESTIMATE: 5 Days 1.5 TuxRx NFS Linux Client mounting CF from SSC along with reading/writing files, etc. BEST_CASE_ESTIMATE: 2 Days TOTAL BEST_CASE_ESTIMATE: 14 Days, 3 Weeks 2.0 Milestone 2: SSC System Configurer and Virtual Server Running ------------ This milestone covers obtaining two major working functions running on the SSC and communicating to the TuxRx. These include the configurer and the Virtual Server with support for all their message types. 2.1 Develop the TuxRx code to receive and send the configuraiton messages sent by the SSC running the configuration DBMS. This entails developing a user level daemon supporting the communication between SSC and TuxRx for all configuration specific messages. BEST_CASE_ESTIMATE: 5 Days 2.2 Develop the TuxRx user level daemon and appropriate netfilter functions to support all Virtual Server specific messages to/from the SSC. BEST_CASE_ESTIMATE: 5 Days 2.3 Test TuxRx code to obtain working Configurer using configuration DBMS on SSC. BEST_CASE_ESTIMATE: 5 Days 2.4 Test TuxRx code to obtain a working SSC Virtual Server. This will entain testing the user daemon and netfilter functions to ensure all Virtual Server messages to/from the SSC are correct. BEST_CASE_ESTIMATE: 10 Days 2.5 TuxRx IP packet forwarding to/from the SSC from it's networking interfaces. This assumes the kernel packet forwarding functions and NOT the netfiler functions are used. BEST_CASE_ESTIMATE: 4 Days TOTAL BEST_CASE_ESTIMATE: 25 Days, 5 Weeks 3.0 Milestone 3: Linux Kernel Memory Changes and IPC''s to APCU and FP ------------ 3.1 Add Linux support for EEE memory layout for shared IPC queue's and the memory regions. The EEE's existing virtual address assignments are: 1 0x0 1E0 000 000 Shared Memory Hole => RETAINED, skb's and buffers 2 0x1 000 000 000 malloc Region => DEPRECIATED, Use Linux slab allocator 3 0x2 000 000 000 txrx Region => DEPRECIATED, Use Linux slab allocator 4 0x3 000 000 000 SAC Region => DEPRECIATED, Use Linux slab allocator 5 0x4 000 000 000 FP Region => RETAINED for FP Usage 6 0x5 000 000 000 Thread Stack Region => DEPRECIATED, Use Linux slab allocator 7 0x6 000 000 000 TxRx Cache Region => DEPRECIATED, Use Linux slab allocator 8 0x7 000 000 000 FP Cache Region => DEPRECIATED, Use Linux slab allocator The Shared Memory hole will be used to allocate skb's and buffers. The changes to the Linux SKB allocator and co-existance of Linux kernel memory allocation policies with the shared regions used under EEE are also included here. BEST_CASE_ESTIMATE: 5 Days 3.2 IPC Shared Queue's Assignments and code Porting Porting the IPC queue's code including initial debugging. BEST_CASE_ESTIMATE: 2 Days 3.3 Testing the direct IPC messaging between the SSC and NCPU ACPU and FP queue's. This also includes the elimination of the NCPU's forwarding of messages to/from the FP in favor of direct communication. BEST_CASE_ESTIMATE: 7 Days 3.4 Linux 2.6.26 cut-back to run on only three cores This task covers restricting the Linux kernel to run on a subset of the processors and adjusting what-ever hardware discovery/assignment changes required. BEST_CASE_ESTIMATE: 2 Days TOTAL BEST_CASE_ESTIMATE: 16 Days, 3+ Weeks 4.0 Milestone 4: Modification and Testing of ACPU NFS/CIFS ------------ This milestone covers obtaining getting basic NFS and CIFS functionality and TuxRx networking communicating to the NFS and CIFS code. 4.1 Converting the ACPU NFS/CIFS code to be modules and runing as kernel thread pinned to a cpu core. BEST_CASE_ESTIMATE: 5 Days 4.2 Conversion of the ACPU NFS/CIFS code to use skb's rather than pkt_desc's. BEST_CASE_ESTIMATE: 5 Days 4.3 Adding the TPL_XXX calls into the Linux TCP/IP stack to be ACPU aware for socket operations. BEST_CASE_ESTIMATE: 4 Days 4.4 Code changes to FP to release skb's and buffers BEST_CASE_ESTIMATE: 2 Days 4.5 Developing and testing the ACPU to FP messages are properly working. These are both control and data specific messages. BEST_CASE_ESTIMATE: 5 Days 4.6 Testing and debugging the NFS code after the above steps have been completed. BEST_CASE_ESTIMATE: 10 Days 4.7 Testing and debugging the CIFS code after the above steps have been completed. BEST_CASE_ESTIMATE: 10 Days TOTAL BEST_CASE_ESTIMATE: 41 Days, 8 Weeks 5.0 Milestone 5: Full System Integration of Networking, NFS/CIFS and FP ------------ This milestone covers integrating the TuxRx networking, the NFS and CIFS and the FP functions. 5.1 Verify the TuxRx IPC specific messages to/from FP Core. BEST_CASE_ESTIMATE: 5 Days 5.2 Test DMIP using a fully integrated set of software. BEST_CASE_ESTIMATE: 10 Days 5.3 Test NFS using a fully integrated set of software. BEST_CASE_ESTIMATE: 10 Days 5.4 Test CIFS CIFS using a fully integrated set of software. BEST_CASE_ESTIMATE: 10 Days TOTAL BEST_CASE_ESTIMATE: 35 Days, 7 Weeks Summary of First Pass Time-Estimates ------------------------------------ If we assume an average "middle" range estimate would be about 2x the most agressive estimates, the following numbers present the best and middle range cases. All of the above estimates are assume a single person working on the tasks serially with no help. Hence assuming two engineers, the project looks do-able in a reasonable time-frame. Milestone 1: Linux kernel, Mgmt-Bus, and IPC messaging between SSC and TuxRx TOTAL BEST_CASE_ESTIMATE: 19 Days, 4 Weeks Milestone 2: SSC System Configurer and Virtual Server Running TOTAL BEST_CASE_ESTIMATE: 25 Days, 5 Weeks Milestone 3: Linux Kernel Memory Changes and IPC''s to APCU and FP TOTAL BEST_CASE_ESTIMATE: 16 Days, 3 Weeks Milestone 4: Modification and Testing of ACPU NFS/CIFS TOTAL BEST_CASE_ESTIMATE: 38 Days, 7.5 Weeks Milestone 5: Full System Integration of Networking, NFS/CIFS and FP TOTAL BEST_CASE_ESTIMATE: 25 Days, 5 Weeks GRAND TOTALS: BEST_CASE_ESTIMATE: 25 Weeks, 1 person, approximately 6 months MID_RANGE_ESTIMATE: 50 Weeks, 1 person, approximately 12.5 months