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

Build PCI_HYPERV as a built-in #11992

Open
wants to merge 1 commit into
base: 3.0-dev
Choose a base branch
from

Conversation

rlmenge
Copy link
Contributor

@rlmenge rlmenge commented Jan 18, 2025

Merge Checklist

All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)

  • The toolchain has been rebuilt successfully (or no changes were made to it)
  • The toolchain/worker package manifests are up-to-date
  • Any updated packages successfully build (or no packages were changed)
  • Packages depending on static components modified in this PR (Golang, *-static subpackages, etc.) have had their Release tag incremented.
  • Package tests (%check section) have been verified with RUN_CHECK=y for existing SPEC files, or added to new SPEC files
  • All package sources are available
  • cgmanifest files are up-to-date and sorted (./cgmanifest.json, ./toolkit/scripts/toolchain/cgmanifest.json, .github/workflows/cgmanifest.json)
  • LICENSE-MAP files are up-to-date (./LICENSES-AND-NOTICES/SPECS/data/licenses.json, ./LICENSES-AND-NOTICES/SPECS/LICENSES-MAP.md, ./LICENSES-AND-NOTICES/SPECS/LICENSE-EXCEPTIONS.PHOTON)
  • All source files have up-to-date hashes in the *.signatures.json files
  • sudo make go-tidy-all and sudo make go-test-coverage pass
  • Documentation has been updated to match any changes to the build system
  • Ready to merge

Summary

Bug fix.

Change PCI_HYPERV to be builtin. This also requires PCI_HYPERV_INTERFACE to be builtin as well. PCI_HYPERV was previously loaded as a module but it results in race conditions when devices are mapped and unmapped. AzureLinux is already starting to access PCIe Devices, when the MMIO mappings from UEFI haven't been fully torn down yet. That causes conflicts, which shows up as missing disks to the customer. If AzureLinux has hyperv pci built into the kernel, then that changes the load ordering of the drivers in the kernel, which has the desired side-effect that UEFI mappings get torn down before the AzureLinux creates net mappings.

For example lsblk for certain SKUs were not seeing all NVMe devices

Kconfig
PCI_HYPERV_INTERFACE Kconfig

Change Log
  • Enable PCI_HYPERV as built-in
Does this affect the toolchain?

YES

Associated issues
Test Methodology

BuddyBuild
-> AKS Image
---> aks perf
---> aks conf - 100% pass
AMD Stage 0 ... Stage 3
-> Lisa image
---> Lisa Tests - 100% pass
ARM Stage 3
-> Lisa image
---> Lisa Tests - 100% pass
Booted on AMD

*** Smoke Testing Kernel 6.6.64.2-4.azl3 (est. < 1 min) ***
PASS: Kernel version matches the running kernel version.
PASS: eth0 interface is up.
PASS: iptables service is running.
Boot times:
Startup finished in 1.629s (kernel) + 1.463s (initrd) + 8.386s (userspace) = 11.479s 
graphical.target reached after 8.006s in userspace.
Kernel size:S
-rw------- 1 root root 14983168 Jan 24 08:07 /boot/vmlinuz-6.6.64.2-4.azl3

Booted on ARM

*** Smoke Testing Kernel 6.6.64.2-4.azl3 (est. < 1 min) ***
PASS: Kernel version matches the running kernel version.
PASS: eth0 interface is up.
PASS: iptables service is running.
Boot times:
Startup finished in 2.198s (kernel) + 1.341s (initrd) + 5.570s (userspace) = 9.110s 
graphical.target reached after 5.312s in userspace.
Kernel size:S
-rw------- 1 root root 48650752 Jan 24 08:27 /boot/vmlinuz-6.6.64.2-4.azl3

@microsoft-github-policy-service microsoft-github-policy-service bot added Packaging 3.0-dev PRs Destined for AzureLinux 3.0 labels Jan 18, 2025
@rlmenge rlmenge force-pushed the rlmenge/3.0/kernel/pci_hyperv-pr branch from 3a8afd1 to f0d3143 Compare January 24, 2025 05:31
@rlmenge rlmenge force-pushed the rlmenge/3.0/kernel/pci_hyperv-pr branch from f0d3143 to 5aaf04c Compare January 24, 2025 07:22
@rlmenge rlmenge changed the title Enable PCI_HYPERV as a builtin Enable PCI_HYPERV as a built-in Jan 24, 2025
@rlmenge rlmenge changed the title Enable PCI_HYPERV as a built-in Build PCI_HYPERV as a built-in Jan 24, 2025
@rlmenge rlmenge marked this pull request as ready for review January 24, 2025 20:44
@rlmenge rlmenge requested a review from a team as a code owner January 24, 2025 20:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3.0-dev PRs Destined for AzureLinux 3.0 Packaging
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant