[Pull Request] [focal/linux-azure] Azure: Focal 5.4 arm64 support
Tim Gardner
tim.gardner at canonical.com
Mon Mar 28 18:43:36 UTC 2022
SRU Justification
[Impact]
Focal linux-azure 5.4 does not support arm64
[Fix]
Backport/cherry-pick approximately 100 patches to support arm64 on hyperv
Microsoft tested.
[Where things could go wrong]
A number of the patches reorganize hyperv CPU support. Therefore amd64
could be affected.
[Other Info]
SF: #00310705
The following changes since commit a23bac6d71664d168ad7952a02eb38bf39139d6b:
UBUNTU: Ubuntu-azure-5.4.0-1073.76 (2022-03-10 11:17:36 +0100)
are available in the Git repository at:
git+ssh://timg-tpi@git.launchpad.net/~timg-tpi/ubuntu/+source/linux/+git/focal
ffa8925c487414e83440b97de7c6e077b18b02d6
for you to fetch changes up to ffa8925c487414e83440b97de7c6e077b18b02d6:
UBUNTU: [Package] Initial arm64 packaging (2022-03-28 12:28:16 -0600)
----------------------------------------------------------------
Andrea Parri (2):
Drivers: hv: vmbus: Introduce table of VMBus protocol versions
Drivers: hv: vmbus: Enable VMBus protocol versions 4.1, 5.1 and 5.2
Andrea Parri (Microsoft) (20):
Drivers: hv: vmbus: Don't bind the offer&rescind works to a
specific CPU
Drivers: hv: vmbus: Replace the per-CPU channel lists with a
global array of channels
hv_netvsc: Disable NAPI before closing the VMBus channel
hv_utils: Always execute the fcopy and vss callbacks in a tasklet
Drivers: hv: vmbus: Use a spin lock for synchronizing channel
scheduling vs. channel removal
PCI: hv: Prepare hv_compose_msi_msg() for the
VMBus-channel-interrupt-to-vCPU reassignment functionality
Drivers: hv: vmbus: Remove the unused HV_LOCALIZED channel
affinity logic
Drivers: hv: vmbus: Synchronize init_vp_index() vs. CPU hotplug
Drivers: hv: vmbus: Introduce the CHANNELMSG_MODIFYCHANNEL
message type
scsi: storvsc: Re-init stor_chns when a channel interrupt is
re-assigned
Drivers: hv: vmbus: Resolve race between init_vp_index() and CPU
hotplug
Drivers: hv: vmbus: Resolve more races involving init_vp_index()
Drivers: hv: vmbus: Remove the target_vp field from the
vmbus_channel struct
Drivers: hv: vmbus: Remove the numa_node field from the
vmbus_channel struct
Drivers: hv: vmbus: Replace cpumask_test_cpu(, cpu_online_mask)
with cpu_online()
Drivers: hv: vmbus: Remove unnecessary channel->lock critical
sections (sc_list readers)
Drivers: hv: vmbus: Use channel_mutex in channel_vp_mapping_show()
Drivers: hv: vmbus: Remove unnecessary channel->lock critical
sections (sc_list updaters)
scsi: storvsc: Introduce the per-storvsc_device spinlock
Drivers: hv: vmbus: Remove the lock field from the vmbus_channel
struct
Andrew Scull (1):
smccc: Define vendor hyp owned service call region
Arnd Bergmann (1):
PCI: hv: Generify PCI probing
Boqun Feng (22):
PCI: hv: Move hypercall related definitions into tlfs header
PCI: hv: Move retarget related structures into tlfs header
PCI: hv: Introduce hv_msi_entry
Drivers: hv: vmbus: Always use HV_HYP_PAGE_SIZE for gpadl
Drivers: hv: vmbus: Move __vmbus_open()
Drivers: hv: vmbus: Introduce types of GPADL
Drivers: hv: Use HV_HYP_PAGE in hv_synic_enable_regs()
Drivers: hv: vmbus: Move virt_to_hvpfn() to hyperv header
hv: hyperv.h: Introduce some hvpfn helper functions
hv_netvsc: Use HV_HYP_PAGE_SIZE for Hyper-V communication
Input: hyperv-keyboard: Use VMBUS_RING_SIZE() for ringbuffer sizes
HID: hyperv: Use VMBUS_RING_SIZE() for ringbuffer sizes
Driver: hv: util: Use VMBUS_RING_SIZE() for ringbuffer sizes
scsi: storvsc: Support PAGE_SIZE larger than 4K
PCI: Introduce domain_nr in pci_host_bridge
PCI: Support populating MSI domains of root buses via bridges
arm64: PCI: Restructure pcibios_root_bridge_prepare()
arm64: PCI: Support root bridge preparation for Hyper-V
PCI: hv: Set ->domain_nr of pci_host_bridge at probing time
PCI: hv: Set up MSI domain at bridge probing time
PCI: hv: Turn on the host bridge probing on ARM64
Drivers: hv: balloon: Use VMBUS_RING_SIZE() wrapper for dm_ring_size
Colin Ian King (1):
drivers: hv: remove redundant assignment to pointer primary_channel
Haiyang Zhang (1):
Drivers: hv: vmbus: Fix duplicate CPU assignments within a device
Himadri Pandya (6):
hv_sock: use HV_HYP_PAGE_SIZE for Hyper-V communication
Drivers: hv: Specify receive buffer size using Hyper-V page size
Drivers: hv: util: Specify ring buffer size using Hyper-V page size
x86: hv: Add function to allocate zeroed page for Hyper-V
Drivers: hv: vmbus: Remove dependencies on guest page size
Drivers: hv: balloon: Remove dependencies on guest page size
Joseph Salisbury (1):
drivers: hv: Create a consistent pattern for checking Hyper-V
hypercall status
Long Li (2):
PCI: hv: Fix a race condition when removing the device
PCI: hv: Remove bus device removal unused refcount/functions
Marc Zyngier (1):
PCI: hv: Drop msi_controller structure
Matheus Castello (1):
drivers: hv: vmbus: Fix checkpatch SPLIT_STRING
Michael Kelley (27):
Drivers: hv: Move AEOI determination to architecture dependent code
KVM: x86: hyperv: Remove duplicate definitions of Reference TSC Page
x86/hyperv: Remove HV_PROCESSOR_POWER_STATE #defines
x86/hyperv: Split hyperv-tlfs.h into arch dependent and
independent files
asm-generic/hyperv: Add definitions for Get/SetVpRegister hypercalls
Drivers: hv: vmbus: Add parsing of VMbus interrupt in ACPI DSDT
Drivers: hv: vmbus: Move Hyper-V page allocator to arch neutral code
x86/hyper-v: Move hv_message_type to architecture neutral module
Drivers: hv: Redo Hyper-V synthetic MSR get/set functions
Drivers: hv: vmbus: Move hyperv_report_panic_msg to arch neutral code
Drivers: hv: vmbus: Handle auto EOI quirk inline
Drivers: hv: vmbus: Move handling of VMbus interrupts
clocksource/drivers/hyper-v: Handle vDSO differences inline
clocksource/drivers/hyper-v: Handle sched_clock differences inline
clocksource/drivers/hyper-v: Set clocksource rating based on
Hyper-V feature
clocksource/drivers/hyper-v: Move handling of STIMER0 interrupts
Drivers: hv: Move Hyper-V extended capability check to arch
neutral code
asm-generic/hyperv: Add missing #include of nmi.h
Drivers: hv: Make portions of Hyper-V init code be arch neutral
Drivers: hv: Add arch independent default functions for some
Hyper-V handlers
Drivers: hv: Move Hyper-V misc functionality to arch-neutral code
drivers: hv: Decouple Hyper-V clock/timer code from VMbus drivers
arm64: hyperv: Add Hyper-V hypercall and register access utilities
arm64: hyperv: Add panic handler
arm64: hyperv: Initialize hypervisor on boot
arm64: efi: Export screen_info
Drivers: hv: Enable Hyper-V code to be built on ARM64
Sudeep Holla (1):
arm64: smccc: Add support for SMCCCv1.2 extended input/output
registers
Sunil Muthuswamy (3):
PCI: hv: Support for create interrupt v3
PCI: hv: Make the code arch neutral by adding arch specific
interfaces
PCI: hv: Add arm64 Hyper-V vPCI support
Thomas Gleixner (1):
x86/apic: Cleanup delivery mode defines
Tim Gardner (4):
UBUNTU: SAUCE: azure: sgx is x86 only
Revert "Drivers: hv: vmbus: Fix duplicate CPU assignments within
a device"
Ubuntu: SAUCE: clocksource/drivers/hyper-v: Untangle stimers and
timesync from clocksources
UBUNTU: [Package] Initial arm64 packaging
Vitaly Kuznetsov (5):
Drivers: hv: copy from message page only what's needed
Drivers: hv: allocate the exact needed memory for messages
Drivers: hv: avoid passing opaque pointer to vmbus_onmessage()
Drivers: hv: make sure that 'struct vmbus_channel_message_header'
compiles correctly
Drivers: hv: check VMBus messages lengths
Wei Liu (3):
x86/hyper-v: Add "polling" bit to hv_synic_sint
asm-generic/hyperv: update hv_msi_entry
asm-generic/hyperv: update hv_interrupt_entry
MAINTAINERS | 12 +-
arch/arm64/Kbuild | 1 +
arch/arm64/hyperv/Makefile | 2 +
arch/arm64/hyperv/hv_core.c | 181 +
arch/arm64/hyperv/mshyperv.c | 87 +
arch/arm64/include/asm/hyperv-tlfs.h | 78 +
arch/arm64/include/asm/mshyperv.h | 54 +
arch/arm64/kernel/asm-offsets.c | 9 +
arch/arm64/kernel/efi.c | 3 +-
arch/arm64/kernel/pci.c | 29 +-
arch/arm64/kernel/smccc-call.S | 57 +
arch/arm64/mm/numa.c | 1 +
arch/x86/hyperv/hv_apic.c | 12 +-
arch/x86/hyperv/hv_init.c | 119 +-
arch/x86/hyperv/hv_proc.c | 213 +
arch/x86/hyperv/irqdomain.c | 385 ++
arch/x86/hyperv/mmu.c | 8 +-
arch/x86/hyperv/nested.c | 8 +-
arch/x86/include/asm/apic.h | 3 +-
arch/x86/include/asm/apicdef.h | 16 +-
arch/x86/include/asm/hyperv-tlfs.h | 568 +--
arch/x86/include/asm/kvm_host.h | 2 +-
arch/x86/include/asm/mshyperv.h | 57 +-
arch/x86/kernel/apic/apic_flat_64.c | 4 +-
arch/x86/kernel/apic/apic_noop.c | 2 +-
arch/x86/kernel/apic/apic_numachip.c | 4 +-
arch/x86/kernel/apic/bigsmp_32.c | 2 +-
arch/x86/kernel/apic/io_apic.c | 11 +-
arch/x86/kernel/apic/probe_32.c | 2 +-
arch/x86/kernel/apic/x2apic_cluster.c | 2 +-
arch/x86/kernel/apic/x2apic_phys.c | 2 +-
arch/x86/kernel/apic/x2apic_uv_x.c | 2 +-
arch/x86/kernel/cpu/mshyperv.c | 38 +-
arch/x86/kvm/hyperv.c | 4 +-
arch/x86/platform/uv/uv_irq.c | 2 +-
debian.azure/abi/5.4.0-1072.75/arm64/ignore | 1 +
.../abi/5.4.0-1072.75/arm64/ignore.modules | 1 +
.../abi/5.4.0-1072.75/arm64/ignore.retpoline | 1 +
debian.azure/config/amd64/config.common.amd64 | 1516 +++++++
debian.azure/config/annotations | 196 +-
debian.azure/config/arm64/config.common.arm64 | 1519 +++++++
debian.azure/config/arm64/config.flavour.azure | 3 +
debian.azure/config/config.common.ubuntu | 4723
+++++++++++++-------
debian.azure/control.d/vars.azure | 4 +-
debian.azure/control.stub.in | 4 +-
debian.azure/etc/getabis | 1 +
debian.azure/etc/kernelconfig | 2 +-
debian.azure/rules.d/arm64.mk | 28 +
debian.master/config/amd64/config.common.amd64 | 2 +-
drivers/Makefile | 2 +-
drivers/clocksource/hyperv_timer.c | 252 +-
drivers/hid/hid-hyperv.c | 4 +-
drivers/hv/Kconfig | 7 +-
drivers/hv/Makefile | 3 +
drivers/hv/channel.c | 522 ++-
drivers/hv/channel_mgmt.c | 503 +--
drivers/hv/connection.c | 115 +-
drivers/hv/hv.c | 113 +-
drivers/hv/hv_balloon.c | 25 +-
drivers/hv/hv_common.c | 284 ++
drivers/hv/hv_fcopy.c | 5 +-
drivers/hv/hv_kvp.c | 3 +-
drivers/hv/hv_snapshot.c | 5 +-
drivers/hv/hv_trace.h | 19 +
drivers/hv/hv_util.c | 29 +-
drivers/hv/hyperv_vmbus.h | 70 +-
drivers/hv/vmbus_drv.c | 433 +-
drivers/input/serio/hyperv-keyboard.c | 4 +-
drivers/iommu/amd_iommu.c | 4 +-
drivers/iommu/intel_irq_remapping.c | 2 +-
drivers/net/hyperv/netvsc.c | 9 +-
drivers/net/hyperv/netvsc_drv.c | 46 +-
drivers/net/hyperv/rndis_filter.c | 13 +-
drivers/pci/Kconfig | 4 +-
drivers/pci/controller/Kconfig | 2 +-
drivers/pci/controller/pci-hyperv.c | 650 ++-
drivers/pci/probe.c | 12 +-
drivers/scsi/storvsc_drv.c | 158 +-
include/asm-generic/hyperv-tlfs.h | 554 +++
include/asm-generic/mshyperv.h | 54 +-
include/clocksource/hyperv_timer.h | 13 +-
include/linux/arm-smccc.h | 56 +
include/linux/hyperv.h | 160 +-
include/linux/pci.h | 11 +
net/vmw_vsock/hyperv_transport.c | 22 +-
ubuntu/Makefile | 2 +
86 files changed, 10765 insertions(+), 3386 deletions(-)
create mode 100644 arch/arm64/hyperv/Makefile
create mode 100644 arch/arm64/hyperv/hv_core.c
create mode 100644 arch/arm64/hyperv/mshyperv.c
create mode 100644 arch/arm64/include/asm/hyperv-tlfs.h
create mode 100644 arch/arm64/include/asm/mshyperv.h
create mode 100644 arch/x86/hyperv/hv_proc.c
create mode 100644 arch/x86/hyperv/irqdomain.c
create mode 100644 debian.azure/abi/5.4.0-1072.75/arm64/ignore
create mode 100644 debian.azure/abi/5.4.0-1072.75/arm64/ignore.modules
create mode 100644 debian.azure/abi/5.4.0-1072.75/arm64/ignore.retpoline
create mode 100644 debian.azure/config/arm64/config.common.arm64
create mode 100644 debian.azure/config/arm64/config.flavour.azure
create mode 100644 debian.azure/rules.d/arm64.mk
create mode 100644 drivers/hv/hv_common.c
create mode 100644 include/asm-generic/hyperv-tlfs.h
--
-----------
Tim Gardner
Canonical, Inc
More information about the kernel-team
mailing list