Tuesday December 2, 2008 Version 5 The following major milestones have been identified by organizing the initial tasks into related development chunks. 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, NetEEE 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.22 Linux ported onto the TxRx Sibyte 1480 socket on Cougar Port the Linux 2.6.22 from SSC on TxRx cores. This should be a direct task on the order of a week. ASSIGNED PERSON: Andy Sharp BEST_CASE_ESTIMATE: 5 Days STATUS: In Progress, delayed by xem escalations, Linux 2.6.22 SMP booted on Cougar hardware, dying due to watchdog timeout; 11/20/2008; Watchdog timeout solved, 11/25/2008. 1.2 Port SSC Linux mgmt-bus network driver and NET_EEE module onto TuxRx Linux. ASSIGNED PERSON: William Fisher BEST_CASE_ESTIMATE: 2 Days STATUS: DONE, mgmt_bus.c driver and neteee.c changes coded and compiled for both SSC and TxRx. Actual time was 5 days 1.3 Code extensions to the mgmt-bus driver to handle IP packets on TxRx to/from SSC. This allows the PPP mgmt bus link between TuxRx and SSC to support NetEEE, TCP/IP and NFS packets. ASSIGNED PERSON: William Fisher BEST_CASE_ESTIMATE: 3 Days STATUS: DONE, mgmt_bus.c changes coded and compiled Actual time was 2 days 1.4 Code test program to exercise mgmt-bus driver and neteee module between SSC to/from TxRx. This exercises the PPP mgmt bus link between SSC and TxRx to support NetEEE packets. ASSIGNED PERSON: William Fisher BEST_CASE_ESTIMATE: 3 Days STATUS: DONE, neteee-msgtest.c coded and compiled Actual time was 2 days 1.5 Debug and test NetEEE between SSC and TuxRx Linux'es using mgmt-bus PCI memory driver and NetEEE protocol module. This validates proper working of mailbox interrupts, device driver and protocol module on both ends. ASSIGNED PERSON: William Fisher BEST_CASE_ESTIMATE: 5 Days STATUS: Not-Started, Waiting for SMP kernel and related modules debugged 1.6 TuxRx IP packet forwarding to/from the SSC from it's networking interfaces, using kernel packet forwarding functions. This entails debugging the IP over mgmtbus code and using stock IP packets over link. The mgmtbus device currently supports the SIOCSIFADDR/SIOCDIFADDR ioctl's for IP address'es on the SSC today. ASSIGNED PERSON: William Fisher BEST_CASE_ESTIMATE: 5 Days STATUS: Not-Started, Waiting for SMP kernel and related modules debugged 1.7 Test and debug TuxRx NFS Linux Client remote mounting SSC's Compact Flash resident along with reading/writing files using NFS, etc. ASSIGNED PERSON: William Fisher BEST_CASE_ESTIMATE: 5 Days STATUS: mgmt_bus.c IP packet support coded, 1 day. STATUS: Not-Started, Waiting for SMP kernel and related modules debugged TOTAL BEST_CASE_ESTIMATE: 31 Days, 6 Weeks 2.0 Milestone 2: SSC/TuxRx Virtual Server and Configuration DBMS ------------ This milestone covers obtaining two major services running on the SSC communicating to TuxRx via it's counter parts. The two services are Virtual Server supporting messages described in sm-ipm/ipm.h and the Cluster DBMS Configuration service. 2.1 Develop TuxRx user level daemon and netfilter functions to implement all Virtual Server messages to/from the SSC. The message types are contained in the header file sm-ipm/ipm.h. The daemon implements the virtual server functions via appropriate network IOCTL's and using a netlink socket to setup netfilter functionalty. ASSIGNED PERSON: Andy Sharp STATUS: Not-Started BEST_CASE_ESTIMATE: 5 Days 2.2 Develop SSC IPM test program communicating with TuxRx Virtual Server daemon by sending/receiving IPM messages. ASSIGNED PERSON: Andy Sharp STATUS: Not-Started STATUS: Coded basic vsvr-msgtest.c program as starting SSC test program. William Fisher, 2 Days. BEST_CASE_ESTIMATE: 5 Days 2.3 Test TuxRx code using working SSC Virtual Server. This covers testing all Virtual Server messages and ensuring correct implementation semantics. ASSIGNED PERSON: Andy Sharp STATUS: Not-Started BEST_CASE_ESTIMATE: 10 Days 2.4 Develop TuxRx user level daemon to receive/send configuration messages sent by SSC running configuration DBMS. This user level daemon will supports the communication between SSC and TuxRx for all configuration specific message types. ASSIGNED PERSON: Andy Sharp STATUS: Not-Started BEST_CASE_ESTIMATE: 5 Days 2.5 Develop SSC test program communicating with TuxRx Configuration daemon by sending/receiving IPM messages. ASSIGNED PERSON: Andy Sharp STATUS: Not-Started STATUS: Coded basic vs-mid-msgtest.c program as starting SSC test program. William Fisher, 3 Days. BEST_CASE_ESTIMATE: 5 Days 2.6 Test TuxRx for Configuration Service using configuration DBMS on SSC. ASSIGNED PERSON: Andy Sharp STATUS: Not-Started BEST_CASE_ESTIMATE: 5 Days TOTAL BEST_CASE_ESTIMATE for Section 2.X: 35 Days, 7 Weeks 3.0 Milestone 3: Linux changes for Shared Memory, IPC Queues and SKB allocation ------------ 3.1 Add Linux support for EEE memory layout for memory regions, used by shared IPC queue's and SKB Slab allocation from specific pages. The changes includes the zone, pglist and header files and the code changes to exploit assign and use these memory regions. The EEE's virtual address assignments are: 0x01 E000 0000 Shared Memory Hole => RETAINED, skb's and buffers 0x01 F800 0000 Shared Memory Hole Ending Address, Starting at 8GB, 400MB hole 0x10 0000 0000 malloc Region => DEPRECIATED, Use Linux slab allocator 0x20 0000 0000 txrx Region => DEPRECIATED, Use Linux slab allocator 0x30 0000 0000 SAC Region => DEPRECIATED, Use Linux slab allocator 0x40 0000 0000 FP Region => RETAINED for FP Usage 0x50 0000 0000 Thread Stack Region => DEPRECIATED, Use Linux slab allocator 0x60 0000 0000 TxRx Cache Region => DEPRECIATED, Use Linux slab allocator 0x70 0000 0000 FP Cache Region => DEPRECIATED, Use Linux slab allocator ASSIGNED PERSON: William Fisher BEST_CASE_ESTIMATE: 5 Days STATUS: Not-Started 3.2 Linux kernel Slab/Zone/Page changes for SKB Allocation This task includes modifying kernel slab allocator to obtain memory from the shared memory region when so designated by state flags. The changes will co-exist with standard Linux kernel memory allocation policies but use shared memory areas for IPC Queue's and skb's. The changes include adding add new status flags, creating a new ZONE_SHAREDMEM and changing the slab allocator to use the new zone and special page region. These changes support the IPC and zero-copy networking and file system operations between NCPU, ACPU and FP cores. ASSIGNED PERSON: William Fisher BEST_CASE_ESTIMATE: 5 Days STATUS: Determined/scoped kernel changes to header files and code to "insert" define a new "zone", ZONE_SHAREDMEM, in the contig_page_data structure. Identified slab allocator changes, 2 days ended 11/21/2008. 3.3 Port EEE IPC message queue code, memory layout and EEE IPC test program to Linux kernel. Code residence: sm-eee/{eee-ipc.[hc],eee-rq.[hc],eee-test.[hc],eee-init.c} ASSIGNED PERSON: William Fisher BEST_CASE_ESTIMATE: 5 Days 3.4 Test direct IPC messaging between the SSC and NCPU ACPU and FP queue's. This maintains the NCPU's forwarding of messages to/from the FP. The test program will modify and existing EEE IPC test program. ASSIGNED PERSON: William Fisher BEST_CASE_ESTIMATE: 3 Days 3.5 Linux 2.6.26 executing on only 3 of 4 Sibyte MIPS Cores This task covers restricting the Linux kernel to run on a subset of the processors and adjusting the hardware discovery/assignment changes if required. ASSIGNED PERSON: William Fisher BEST_CASE_ESTIMATE: 2 Days TOTAL BEST_CASE_ESTIMATE for Section 3.X: 20 Days, 4 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 Code and compile the ACPU NFS/CIFS code to be kernel loadable modules running on a dedicate CPU core polling the IPC queue's. ASSIGNED PERSON: Willaim Fisher BEST_CASE_ESTIMATE: 5 Days 4.2 Convert ACPU NFS/CIFS code to use skb's rather than pkt_desc's. ASSIGNED PERSON: Willaim Fisher BEST_CASE_ESTIMATE: 5 Days 4.3 Add TPL_XXX calls, aka "hooks" into the Linux TCP/IP stack to make ACPU aware of particular socket operations. ASSIGNED PERSON: Willaim Fisher BEST_CASE_ESTIMATE: 4 Days 4.4 Code changes to FP to release skb's and buffers ASSIGNED PERSON: Willaim Fisher BEST_CASE_ESTIMATE: 2 Days 4.5 Develop and test the ACPU to FP messaging is properly working. These are both control and data specific messages. ASSIGNED PERSON: Willaim Fisher BEST_CASE_ESTIMATE: 5 Days 4.6 Test and debug the NFS code after steps 1-5, aka the above items, have been completed. ASSIGNED PERSON: Andy Sharp and Willaim Fisher BEST_CASE_ESTIMATE: 10 Days 4.7 Test and debug the CIFS code after steps 1-5, aka the above items, have been completed. ASSIGNED PERSON: Andy Sharp and Willaim Fisher BEST_CASE_ESTIMATE: 10 Days TOTAL BEST_CASE_ESTIMATE for Section 4.X: 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. ASSIGNED PERSON: Willaim Fisher BEST_CASE_ESTIMATE: 5 Days 5.2 Test DMIP using a fully integrated set of software. ASSIGNED PERSON: Andy Sharp BEST_CASE_ESTIMATE: 10 Days 5.3 Test NFS using a fully integrated set of software. ASSIGNED PERSON: Andy Sharp and Willaim Fisher BEST_CASE_ESTIMATE: 10 Days 5.4 Test CIFS CIFS using a fully integrated set of software. ASSIGNED PERSON: Andy Sharp and Willaim Fisher BEST_CASE_ESTIMATE: 10 Days TOTAL BEST_CASE_ESTIMATE for Section 5.X: 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: 20 Days, 4 Weeks Milestone 2: SSC System Configurer and Virtual Server Running TOTAL BEST_CASE_ESTIMATE: 30 Days, 6 Weeks Milestone 3: Linux Kernel Memory Changes and IPC''s to APCU and FP TOTAL BEST_CASE_ESTIMATE: 17 Days, 3.5 Weeks Milestone 4: Modification and Testing of ACPU NFS/CIFS TOTAL BEST_CASE_ESTIMATE: 41 Days, 8 Weeks Milestone 5: Full System Integration of Networking, NFS/CIFS and FP TOTAL BEST_CASE_ESTIMATE: 35 Days, 7 Weeks GRAND TOTALS: BEST_CASE_ESTIMATE: 25 Weeks, 1 person, approximately 6 months MID_RANGE_ESTIMATE: 50 Weeks, 1 person, approximately 12.5 months