[SeaBIOS] [PATCH v3 0/4] nvme: Add PRP List support

Alexander Graf posted 4 patches 3 years, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/seabios tags/patchew/20200930211056.8478-1-graf@amazon.com
src/hw/nvme-int.h |  16 ++++++-
src/hw/nvme.c     | 122 +++++++++++++++++++++++++++++++++++++++++++++++-------
2 files changed, 121 insertions(+), 17 deletions(-)
[SeaBIOS] [PATCH v3 0/4] nvme: Add PRP List support
Posted by Alexander Graf 3 years, 6 months ago
While looking at VM bootup times, we stumbled over the fact that the NVMe
code only does I/O operations of up to 4kb at a given point in time. This
is usually ok, but if you have an OS that loads a lot of data on boot in
combination to network backed storage, it shows in bootup times.

There is no need to restrict ourselves to 4kb though. The INT13 call we
receive gives us much larger chunks which we can just map into a native
bigger NVMe I/O call if the request buffer is page aligned.

This patch implements all logic required to do the above and gives a
substantial performance boost on boot.

v1 -> v2:

  - fix dprintf
  - Fix bounds check on PRP list add logic
  - Reduce PRP list to 15 entries embedded in the ns struct.
    This reduces BIOS reserved memory footprint by 4kb.

v2 -> v3:

  - new patch: nvme: Split requests by maximum allowed size
  - Adjust the maximum request size to sector units. The hardware field
    describes it in pages.

Alexander Graf (4):
  nvme: Record maximum allowed request size
  nvme: Allow to set PRP2
  nvme: Pass large I/O requests as PRP lists
  nvme: Split requests by maximum allowed size

 src/hw/nvme-int.h |  16 ++++++-
 src/hw/nvme.c     | 122 +++++++++++++++++++++++++++++++++++++++++++++++-------
 2 files changed, 121 insertions(+), 17 deletions(-)

-- 
2.16.4




Amazon Development Center Germany GmbH
Krausenstr. 38
10117 Berlin
Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss
Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B
Sitz: Berlin
Ust-ID: DE 289 237 879


_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-leave@seabios.org
[SeaBIOS] Re: [PATCH v3 0/4] nvme: Add PRP List support
Posted by Kevin O'Connor 3 years, 5 months ago
On Wed, Sep 30, 2020 at 11:10:52PM +0200, Alexander Graf wrote:
> While looking at VM bootup times, we stumbled over the fact that the NVMe
> code only does I/O operations of up to 4kb at a given point in time. This
> is usually ok, but if you have an OS that loads a lot of data on boot in
> combination to network backed storage, it shows in bootup times.
> 
> There is no need to restrict ourselves to 4kb though. The INT13 call we
> receive gives us much larger chunks which we can just map into a native
> bigger NVMe I/O call if the request buffer is page aligned.
> 
> This patch implements all logic required to do the above and gives a
> substantial performance boost on boot.

Thanks.  I committed this series.

-Kevin
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-leave@seabios.org