[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