Skip to content

Commit bcb254d

Browse files
authored
Merge branch 'main' into update/scopedown-github-token
2 parents c9892af + b5265f3 commit bcb254d

File tree

171 files changed

+13058
-4027
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

171 files changed

+13058
-4027
lines changed

.buildkite/common.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,6 @@ def group(label, command, instances, platforms, **kwargs):
7676
7777
https://buildkite.com/docs/pipelines/group-step
7878
"""
79-
# Use the 1st character of the group name (should be an emoji)
80-
label1 = label[0]
81-
# if the emoji is in the form ":emoji:", pick the entire slug
82-
if label.startswith(":") and ":" in label[1:]:
83-
label1 = label[: label.index(":", 1) + 1]
84-
8579
steps = []
8680
commands = command
8781
if isinstance(command, str):
@@ -92,7 +86,7 @@ def group(label, command, instances, platforms, **kwargs):
9286
args = {"instance": instance, "os": os_, "kv": kv}
9387
step = {
9488
"command": [cmd.format(**args) for cmd in commands],
95-
"label": f"{label1} {instance} {os_} {kv}",
89+
"label": f"{label}-{instance}-{os_}-{kv}",
9690
"agents": args,
9791
}
9892
step_kwargs = dict_fmt(kwargs, args)

.buildkite/pipeline_cpu_template.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class BkStep(str, Enum):
2323
cpu_template_test = {
2424
"rdmsr": {
2525
BkStep.COMMAND: [
26-
"tools/devtool -y test --no-build -- -m nonci -n4 --dist worksteal integration_tests/functional/test_cpu_features_x86_64.py -k 'test_cpu_rdmsr' "
26+
"tools/devtool -y test --no-build -- -m no_block_pr -n4 --dist worksteal integration_tests/functional/test_cpu_features_x86_64.py -k 'test_cpu_rdmsr' "
2727
],
2828
BkStep.LABEL: "📖 rdmsr",
2929
"instances": [

.buildkite/pipeline_perf.py

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,54 +17,74 @@
1717
# has to be the node associated with the NUMA node from which we picked CPUs.
1818
perf_test = {
1919
"virtio-block-sync": {
20-
"label": "💿 Virtio Sync Block Performance",
20+
"label": "virtio-block-sync",
2121
"tests": "integration_tests/performance/test_block.py::test_block_performance -k 'not Async'",
2222
"devtool_opts": "-c 1-10 -m 0",
2323
},
2424
"virtio-block-async": {
25-
"label": "💿 Virtio Async Block Performance",
25+
"label": "virtio-block-async",
2626
"tests": "integration_tests/performance/test_block.py::test_block_performance -k Async",
2727
"devtool_opts": "-c 1-10 -m 0",
2828
},
2929
"vhost-user-block": {
30-
"label": "💿 vhost-user Block Performance",
30+
"label": "vhost-user-block",
3131
"tests": "integration_tests/performance/test_block.py::test_block_vhost_user_performance",
3232
"devtool_opts": "-c 1-10 -m 0",
3333
"ab_opts": "--noise-threshold 0.1",
3434
},
3535
"network": {
36-
"label": "📠 Network Latency and Throughput",
36+
"label": "network",
3737
"tests": "integration_tests/performance/test_network.py",
3838
"devtool_opts": "-c 1-10 -m 0",
3939
# Triggers if delta is > 0.01ms (10µs) or default relative threshold (5%)
4040
# only relevant for latency test, throughput test will always be magnitudes above this anyway
4141
"ab_opts": "--absolute-strength 0.010",
4242
},
4343
"snapshot-latency": {
44-
"label": "📸 Snapshot Latency",
44+
"label": "snapshot-latency",
4545
"tests": "integration_tests/performance/test_snapshot.py::test_restore_latency integration_tests/performance/test_snapshot.py::test_post_restore_latency integration_tests/performance/test_snapshot.py::test_snapshot_create_latency",
4646
"devtool_opts": "-c 1-12 -m 0",
4747
},
4848
"population-latency": {
49-
"label": "📸 Memory Population Latency",
49+
"label": "population-latency",
5050
"tests": "integration_tests/performance/test_snapshot.py::test_population_latency",
5151
"devtool_opts": "-c 1-12 -m 0",
5252
},
5353
"vsock-throughput": {
54-
"label": "🧦 Vsock Throughput",
54+
"label": "vsock-throughput",
5555
"tests": "integration_tests/performance/test_vsock.py",
5656
"devtool_opts": "-c 1-10 -m 0",
5757
},
5858
"memory-overhead": {
59-
"label": "💾 Memory Overhead and 👢 Boottime",
60-
"tests": "integration_tests/performance/test_memory_overhead.py integration_tests/performance/test_boottime.py::test_boottime",
59+
"label": "memory-overhead",
60+
"tests": "integration_tests/performance/test_memory_overhead.py",
61+
"devtool_opts": "-c 1-10 -m 0",
62+
},
63+
"boottime": {
64+
"label": "boottime",
65+
"tests": "integration_tests/performance/test_boottime.py::test_boottime",
6166
"devtool_opts": "-c 1-10 -m 0",
6267
},
6368
"jailer": {
64-
"label": "⛓️ jailer",
69+
"label": "jailer",
6570
"tests": "integration_tests/performance/test_jailer.py",
6671
"devtool_opts": "-c 1-10 -m 0",
6772
},
73+
"pmem": {
74+
"label": "pmem",
75+
"tests": "integration_tests/performance/test_pmem.py",
76+
"devtool_opts": "-c 1-10 -m 0",
77+
},
78+
"mmds": {
79+
"label": "mmds",
80+
"tests": "integration_tests/performance/test_mmds.py",
81+
"devtool_opts": "-c 1-10 -m 0",
82+
},
83+
"memory-hotplug": {
84+
"label": "memory-hotplug",
85+
"tests": "integration_tests/performance/test_hotplug_memory.py",
86+
"devtool_opts": "-c 1-10 -m 0",
87+
},
6888
}
6989

7090
REVISION_A = os.environ.get("REVISION_A")

.buildkite/pipeline_pr_no_block.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"❓ Optional",
2323
pipeline.devtool_test(
2424
devtool_opts="--performance -c 1-10 -m 0",
25-
pytest_opts="integration_tests/ -m 'no_block_pr and not nonci' --log-cli-level=INFO",
25+
pytest_opts="integration_tests/ -m no_block_pr --log-cli-level=INFO",
2626
),
2727
)
2828
if not run_all_tests(get_changed_files()):

.cargo/config.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,10 @@ git-fetch-with-cli = true
99

1010
[env]
1111
AWS_LC_SYS_NO_JITTER_ENTROPY = "1"
12+
# disable AVX512 as it adds 600k of binary size
13+
# this was only used for MMDS token generation
14+
# Note: due to a bug in aws-lc [1] the AWS_LC_SYS_CFLAGS only work with
15+
# the cmake compiler.
16+
# [1]: https://github.com/aws/aws-lc-rs/issues/965
17+
AWS_LC_SYS_CMAKE_BUILDER = "1"
18+
AWS_LC_SYS_CFLAGS = "-DMY_ASSEMBLER_IS_TOO_OLD_FOR_512AVX"
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: Monitor libseccomp Releases
2+
3+
on:
4+
schedule:
5+
- cron: '0 0 * * *' # Daily at midnight UTC
6+
workflow_dispatch: # Allow manual trigger
7+
8+
permissions:
9+
issues: write
10+
contents: read
11+
12+
jobs:
13+
check-release:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout repository
17+
uses: actions/checkout@v4
18+
19+
- name: Get current libseccomp version from Dockerfile
20+
id: current
21+
run: |
22+
CURRENT=$(grep 'LIBSECCOMP_VER' tools/devctr/Dockerfile | grep -oP "v[0-9.]+")
23+
echo "version=$CURRENT" >> $GITHUB_OUTPUT
24+
25+
- name: Check for new libseccomp release
26+
id: latest
27+
run: |
28+
LATEST=$(curl -s https://api.github.com/repos/seccomp/libseccomp/releases/latest | jq -r '.tag_name')
29+
echo "version=$LATEST" >> $GITHUB_OUTPUT
30+
31+
- name: Check latest version is newer
32+
id: semver_check
33+
run: |
34+
CURRENT=$(echo ${{ steps.current.outputs.version }} | grep -oP "[0-9.]+")
35+
LATEST=$(echo ${{ steps.latest.outputs.version }} | grep -oP "[0-9.]+")
36+
if ! printf '%s\n%s' "$LATEST" "$CURRENT" | sort -VC && [ "$CURRENT" != "$LATEST" ]; then
37+
echo "is_newer=true" >> $GITHUB_OUTPUT;
38+
else
39+
echo "is_newer=false" >> $GITHUB_OUTPUT;
40+
fi
41+
42+
- name: Check if issue exists
43+
if: steps.semver_check.outputs.is_newer == 'true' # New release has higher semantic version
44+
id: issue_check
45+
run: |
46+
ISSUES=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
47+
"https://api.github.com/repos/${{ github.repository }}/issues?state=open&labels=dependencies" | \
48+
jq -r --arg tag "${{ steps.latest.outputs.version }}" '[.[] | select(.title | contains("chore(deps): update libseccomp to \($tag)"))] | length')
49+
echo "exists=$ISSUES" >> $GITHUB_OUTPUT
50+
51+
- name: Create issue for new release
52+
id: create_issue
53+
if: steps.semver_check.outputs.is_newer == 'true' && steps.issue_check.outputs.exists == '0' # No existing issue for new version
54+
run: |
55+
gh issue create \
56+
--title "chore(deps): update libseccomp to ${{ steps.latest.outputs.version }}" \
57+
--body "$(cat <<EOF
58+
A new version of libseccomp has been released: **${{ steps.latest.outputs.version }}**
59+
60+
Current version in Dockerfile: **${{ steps.current.outputs.version }}**
61+
62+
Repository: https://github.com/seccomp/libseccomp/releases/tag/${{ steps.latest.outputs.version }}
63+
64+
Please review and consider updating Firecracker's dependency in \`tools/devctr/Dockerfile\`.
65+
EOF
66+
)" \
67+
--label "dependencies"
68+
env:
69+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

CHANGELOG.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,41 @@ and this project adheres to
1010

1111
### Added
1212

13+
### Changed
14+
15+
### Deprecated
16+
17+
### Removed
18+
19+
### Fixed
20+
21+
## [v1.14.0]
22+
23+
### Added
24+
1325
- [#5463](https://github.com/firecracker-microvm/firecracker/pull/5463): Added
1426
support for `virtio-pmem` devices. See [documentation](docs/pmem.md) for more
1527
information.
28+
- [#5534](https://github.com/firecracker-microvm/firecracker/pull/5534): Added
29+
support for memory hot-plugging through the `virtio-mem` device. See
30+
[documentation](docs/memory-hotplug.md) for more information.
31+
- [#5491](https://github.com/firecracker-microvm/firecracker/pull/5491): Added
32+
support for `virtio-balloon` free page reporting and hinting. Free page
33+
reporting is a developer preview not for production feature. See
34+
[documentation](docs/ballooning.md) for more information.
1635

1736
### Changed
1837

38+
- [#4028](https://github.com/firecracker-microvm/firecracker/pull/4028):
39+
Firecracker now creates the log and metrics files if they do not exist,
40+
simplifying the launch of Firecracker by removing a manual step.
41+
- [#5516](https://github.com/firecracker-microvm/firecracker/pull/5516): Balloon
42+
stats now supports guest kernel >= 6.12, adding metrics on guest OOM kills,
43+
memory allocation stalls, and memory scan/reclaim info.
44+
- [#5526](https://github.com/firecracker-microvm/firecracker/pull/5526): Specify
45+
IA32_MTRRdefType MSR on VM boot to allow it to set page attributes for memory
46+
regions.
47+
1948
### Deprecated
2049

2150
### Removed
@@ -35,6 +64,16 @@ and this project adheres to
3564
Intel AMX enabling for kernels that support dynamic XSTATE features for
3665
userspace applications but not for KVM guests (e.g. kernel versions >= 5.16
3766
and < 5.17).
67+
- [#5485](https://github.com/firecracker-microvm/firecracker/pull/5485): Fixed a
68+
bug causing a read/write from an iovec to be duplicated when receiving an
69+
error on an iovec other than the first. This caused a data corruption issue in
70+
the vsock device starting from guest kernel 6.17.
71+
- [#5494](https://github.com/firecracker-microvm/firecracker/pull/5494): Fixed a
72+
watchdog soft lockup bug on microVMs restored from snapshots by calling
73+
KVM_KVMCLOCK_CTRL ioctl before resuming.
74+
- [#5538](https://github.com/firecracker-microvm/firecracker/pull/5538): Fixed a
75+
cache coherency issue on non-FWB aarch64 platforms by adding `dma-coherent`
76+
property to virtio-mmio nodes in the FDT.
3877

3978
## [1.13.0]
4079

0 commit comments

Comments
 (0)