×

Lockless multithreaded completion queue access

  • US 10,031,786 B2
  • Filed: 01/13/2016
  • Issued: 07/24/2018
  • Est. Priority Date: 01/13/2016
  • Status: Active Grant
First Claim
Patent Images

1. A method, comprising:

  • identifying a first number of processors in a computer;

    identifying a second number of interrupt request (IRQ) lines on a hardware acceleration device in the computer and coupled to the processors, the second number greater than or equal to the first number;

    associating, using a device driver by a first given one of the processors, each of the IRQ lines with one of the processors;

    selecting, by the first given processor, a given IRQ line for an application thread;

    identifying, by the first given processor, a second given one of the processors associated with the given IRQ line;

    initiating, by the first given processor, execution of the application thread on the second given processor;

    configuring through the device driver by the first given processor, using the given IRQ line, a completion queue for the application thread; and

    prior to selecting the given IRQ line, identifying a plurality of event queues on the hardware acceleration device, and associating each of the IRQ lines with one of the event queues by the first given processor;

    wherein a given one of the event queues is bound to the completion queue prior to the first given processor initiating execution of the application thread on the second given processor; and

    wherein the second given processor is configured to lock the completion queue upon detecting that the given IRQ line is associated with a third given one of the processors by acquiring a spinlock for the completion queue, setting an processor owner flag to an invalid value, activating a read memory barrier, waiting for an in-use flag to clear, and releasing the spinlock.

View all claims
  • 1 Assignment
Timeline View
Assignment View
    ×
    ×