SanDisk

SanDisk

Linux PCIe Driver Developer

Company

SanDisk

Role

Linux PCIe Driver Developer

Job type

Full-time

Posted

2 days ago

Share this job

Salary

Not disclosed by employer

Job description

We are seeking a talented and driven Firmware Engineer to join our team and contribute to the host side software stack of machine learning for the Next Gen Computational PCIe Flash Controller project. In this role, you will be a key contributor to the firmware that enables high-performance communication and data transfer between the host and our device. You'll work on critical components, including the PCIe driver, DMA engine, MMIO, and Mailbox interfaces, to ensure a seamless and efficient ML workload.

  • Linux PCIe Driver Development: Architect and implement high-performance PCIe drivers for the Linux operating systems. his includes developing a robust architecture for supporting multiple endpoints across multiple cards and ensuring reliable communication.
  • PCIe Switch Management: Design and implement the firmware for supporting complex hardware topologies, including multiple PCIe cards connected over an external PCIe switch. You'll be responsible for the driver’s logic to identify and set up the PCI device address for each individual PCIe device within each card.
  • Custom Protocol Design: Design and implement a custom, NVMe-like protocol that operates over PCIe MMIO. You'll be responsible for the entire host-side implementation, including:
    • Doorbell Registers: Design and implement the mechanism for host software to signal the device by ringing doorbells to submit commands.
    • Command Queues: Manage command submission and completion queues in memory.
    • Interrupt Handling: Develop the interrupt service routines (ISRs) to handle device-generated interrupts and notify the host of command completions and events.
    • DMA Engine Control: Orchestrate the DMA engine to move data efficiently between the host and device without CPU intervention.
  • Memory Management: Architect the software for accessing the device's SRAM and DRAM over the PCIe BAR (Base Address Register) space, ensuring optimal performance and cache coherency.

Collaboration: Work closely with the host-side software teams, hardware engineers, and other firmware engineers to ensure a cohesive and high-performing end-to-end solution

  • Experience: 8+ years in system software development.
  • Kernel-Mode Expertise: Extensive experience designing and developing kernel-mode drivers for Linux.
  • Protocol Knowledge: Deep understanding of high-speed I/O protocols like PCIe and the NVMe specification. Experience with the concepts of submission and completion queues, doorbells, and DMA is a must.
  • Low-Level Proficiency: Mastery of C/C++ and a deep understanding of low-level system software architecture, including MMIO and virtual memory.
  • Cross-OS Development: Proven ability to manage and maintain a codebase for multiple operating systems.
  • Problem-Solving: Exceptional debugging and analytical skills, with a track record of solving the most challenging system-level problems.
  • Education: Bachelor's or Master's degree in Computer Science, Electrical Engineering, or a related field.

Sandisk thrives on the power and potential of diversity. As a global company, we believe the most effective way to embrace the diversity of our customers and communities is to mirror it from within. We believe the fusion of various perspectives results in the best outcomes for our employees, our company, our customers, and the world around us. We are committed to an inclusive environment where every individual can thrive through a sense of belonging, respect and contribution.

Sandisk is committed to offering opportunities to applicants with disabilities and ensuring all candidates can successfully navigate our careers website and our hiring process. Please contact us at jobs.accommodations@sandisk.com to advise us of your accommodation request. In your email, please include a description of the specific accommodation you are requesting as well as the job title and requisition number of the position for which you are applying.

Resume ExampleCover Letter Example

Explore more