Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dpdk: illegal instruction on Ivy Bridge CPU #382

Closed
epuertat opened this issue Jan 19, 2024 · 2 comments · Fixed by #362
Closed

dpdk: illegal instruction on Ivy Bridge CPU #382

epuertat opened this issue Jan 19, 2024 · 2 comments · Fixed by #362
Assignees
Labels
bug Something isn't working productization

Comments

@epuertat
Copy link
Member

After extending the approach used for #256 (#261) and #311 (#314), SPDK (nvmf_tgt and DPDK's EAL) was still returning an Illegal Instruction core dump.

I found that the proper approach is not enable/disable specific instruction sets but telling the compiler to generate code for a specific generation of x86-64 machine.

This can be easily done by passing --target-platform=x86-64-v<generation> to the SPDK configure script.

I'll remove the existing fixes for the above mentioned PRs, as this is a more comprehensive/maintainable approach.

@epuertat epuertat added bug Something isn't working productization labels Jan 19, 2024
@epuertat epuertat self-assigned this Jan 19, 2024
@epuertat epuertat added this to NVMe-oF Jan 19, 2024
@github-project-automation github-project-automation bot moved this to 🆕 New in NVMe-oF Jan 19, 2024
@epuertat epuertat moved this from 🆕 New to 🏗 In progress in NVMe-oF Jan 19, 2024
@caroav
Copy link
Collaborator

caroav commented Jan 22, 2024

@epuertat is it enough to build for x86-64-v?
cc - @barakda @gbregman

@epuertat
Copy link
Member Author

@epuertat is it enough to build for x86-64-v? cc - @barakda @gbregman

@caroav yes, CPU instructions are added incrementally, so x86-64-v2 will work in all x86-64 CPUs from the last ~10 years (Ivy Bridge is from 2013). This excludes AVX*, RDSEED and many others. The current approach only excluded certain instruction sets, but didn't tell the compiler to generate code compatible with an existing architecture.

That said, having an SPDK compiled for x86-64-v2 might exclude optimizations that make it less performant. My suggestion is that we release (at least a x86-64-generic or v2 build, plus a v4, which leverages the latest optimizations).

@github-project-automation github-project-automation bot moved this from 🏗 In progress to ✅ Done in NVMe-oF Jan 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working productization
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

2 participants