diff --git a/.kernel.metadata b/.kernel.metadata index 495b925..ba1eb57 100644 --- a/.kernel.metadata +++ b/.kernel.metadata @@ -1,2 +1,2 @@ d1113deb77327ff8526613fce852277935d70100 SOURCES/linux-5.10.tar.xz -103e22f6acaec4a701c22b3fa949f2f7896a8904 SOURCES/patch-5.10.117.xz +4d9e131bec2ca375b14fa7e78e06d521d9353914 SOURCES/patch-5.10.123.xz diff --git a/SOURCES/azure.patch b/SOURCES/azure.patch index 9dd1248..6b5191f 100644 --- a/SOURCES/azure.patch +++ b/SOURCES/azure.patch @@ -30,7 +30,7 @@ Signed-off-by: Wei Liu 5 files changed, 45 insertions(+) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index 6375967a8244..6608d50d7aaa 100644 +index 01860c0d324d..ccfb1a6bc2a5 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -10,6 +10,7 @@ @@ -41,7 +41,7 @@ index 6375967a8244..6608d50d7aaa 100644 #include #include #include -@@ -555,3 +556,17 @@ bool hv_is_hibernation_supported(void) +@@ -561,3 +562,17 @@ bool hv_is_hibernation_supported(void) return acpi_sleep_state_supported(ACPI_STATE_S4); } EXPORT_SYMBOL_GPL(hv_is_hibernation_supported); @@ -93,7 +93,7 @@ index 0ed20e8bba9e..cc878049c39b 100644 /* MSR used to identify the guest OS. */ diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c -index 65d11711cd7b..47a95d543658 100644 +index 021cd067733e..ee0edc8741d6 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -243,6 +243,7 @@ static void __init ms_hyperv_init_platform(void) @@ -190,7 +190,7 @@ Link: https://lore.kernel.org/r/20210203150435.27941-8-wei.liu@kernel.org 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index 6608d50d7aaa..e85d3199a3da 100644 +index ccfb1a6bc2a5..570bcb1d7d64 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -27,6 +27,7 @@ @@ -201,7 +201,7 @@ index 6608d50d7aaa..e85d3199a3da 100644 int hyperv_init_cpuhp; -@@ -265,6 +266,9 @@ static int hv_suspend(void) +@@ -271,6 +272,9 @@ static int hv_suspend(void) union hv_x64_msr_hypercall_contents hypercall_msr; int ret; @@ -211,7 +211,7 @@ index 6608d50d7aaa..e85d3199a3da 100644 /* * Reset the hypercall page as it is going to be invalidated * accross hibernation. Setting hv_hypercall_pg to NULL ensures -@@ -409,8 +413,35 @@ void __init hyperv_init(void) +@@ -415,8 +419,35 @@ void __init hyperv_init(void) rdmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64); hypercall_msr.enable = 1; @@ -249,7 +249,7 @@ index 6608d50d7aaa..e85d3199a3da 100644 /* * hyperv_init() is called before LAPIC is initialized: see -@@ -553,7 +584,7 @@ EXPORT_SYMBOL_GPL(hv_is_hyperv_initialized); +@@ -559,7 +590,7 @@ EXPORT_SYMBOL_GPL(hv_is_hyperv_initialized); bool hv_is_hibernation_supported(void) { @@ -324,7 +324,7 @@ Link: https://lore.kernel.org/r/20210203150435.27941-6-wei.liu@kernel.org 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index e85d3199a3da..6c576c256e15 100644 +index 570bcb1d7d64..adbec5f5dcf0 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -46,6 +46,9 @@ EXPORT_SYMBOL_GPL(hv_vp_assist_page); @@ -359,7 +359,7 @@ index e85d3199a3da..6c576c256e15 100644 hv_get_vp_index(msr_vp_index); -@@ -210,14 +220,23 @@ static int hv_cpu_die(unsigned int cpu) +@@ -216,14 +226,23 @@ static int hv_cpu_die(unsigned int cpu) unsigned int new_cpu; unsigned long flags; void **input_arg; @@ -386,7 +386,7 @@ index e85d3199a3da..6c576c256e15 100644 if (hv_vp_assist_page && hv_vp_assist_page[cpu]) wrmsrl(HV_X64_MSR_VP_ASSIST_PAGE, 0); -@@ -373,6 +392,12 @@ void __init hyperv_init(void) +@@ -379,6 +398,12 @@ void __init hyperv_init(void) BUG_ON(hyperv_pcpu_input_arg == NULL); @@ -479,7 +479,7 @@ index cf881d0c7c9d..ef06cdac8444 100644 void hv_apic_init(void); void __init hv_init_spinlocks(void); diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c -index 47a95d543658..e8fc8d297b6b 100644 +index ee0edc8741d6..25cc1740d9b9 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -32,6 +32,10 @@ @@ -541,7 +541,7 @@ Link: https://lore.kernel.org/r/20210203150435.27941-11-wei.liu@kernel.org 1 file changed, 29 insertions(+) diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c -index e8fc8d297b6b..9fde437f53ea 100644 +index 25cc1740d9b9..3e0069392158 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -31,6 +31,7 @@ @@ -767,7 +767,7 @@ Link: https://lore.kernel.org/r/20210203150435.27941-7-wei.liu@kernel.org 3 files changed, 34 insertions(+) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index 6c576c256e15..aeea8fbf3c23 100644 +index adbec5f5dcf0..cd2f5e8cafa8 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -30,6 +30,8 @@ @@ -779,7 +779,7 @@ index 6c576c256e15..aeea8fbf3c23 100644 void *hv_hypercall_pg; EXPORT_SYMBOL_GPL(hv_hypercall_pg); -@@ -358,6 +360,24 @@ static void __init hv_stimer_setup_percpu_clockev(void) +@@ -364,6 +366,24 @@ static void __init hv_stimer_setup_percpu_clockev(void) old_setup_percpu_clockev(); } @@ -804,7 +804,7 @@ index 6c576c256e15..aeea8fbf3c23 100644 /* * This function is to be invoked early in the boot sequence after the * hypervisor has been detected. -@@ -485,6 +505,12 @@ void __init hyperv_init(void) +@@ -491,6 +511,12 @@ void __init hyperv_init(void) register_syscore_ops(&hv_syscore_ops); hyperv_init_cpuhp = cpuhp; @@ -1436,7 +1436,7 @@ Link: https://lore.kernel.org/r/20210203150435.27941-13-wei.liu@kernel.org 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c -index ad3e3cde1c20..7fd8cd554675 100644 +index a070e69bb49c..45f745b114bf 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c @@ -1215,7 +1215,7 @@ static void hv_irq_unmask(struct irq_data *data) @@ -1546,10 +1546,10 @@ index 565358020921..48e2c51464e8 100644 ifdef CONFIG_X86_64 diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index aeea8fbf3c23..b81047dec1da 100644 +index cd2f5e8cafa8..4a7cb755ca31 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c -@@ -511,6 +511,15 @@ void __init hyperv_init(void) +@@ -517,6 +517,15 @@ void __init hyperv_init(void) BUG_ON(hv_root_partition && hv_current_partition_id == ~0ull); @@ -2266,7 +2266,7 @@ Signed-off-by: Wei Liu 4 files changed, 40 insertions(+), 27 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index b81047dec1da..4bdb3443b25e 100644 +index 4a7cb755ca31..32998f5e01e2 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -54,28 +54,6 @@ EXPORT_SYMBOL_GPL(hyperv_pcpu_output_arg); @@ -2618,10 +2618,10 @@ Signed-off-by: Wei Liu 3 files changed, 19 insertions(+), 33 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index 4bdb3443b25e..f5a8f057ed89 100644 +index 32998f5e01e2..611f164d08e9 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c -@@ -571,33 +571,6 @@ void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die) +@@ -577,33 +577,6 @@ void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die) } EXPORT_SYMBOL_GPL(hyperv_report_panic); @@ -2656,7 +2656,7 @@ index 4bdb3443b25e..f5a8f057ed89 100644 { union hv_x64_msr_hypercall_contents hypercall_msr; diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c -index a5a402e776c7..4f9a1d12aa88 100644 +index 5d820037e291..937a6b25c6ab 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c @@ -1362,22 +1362,36 @@ static void hv_kmsg_dump(struct kmsg_dumper *dumper, @@ -2871,10 +2871,10 @@ Signed-off-by: Wei Liu 6 files changed, 180 insertions(+), 8 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index f5a8f057ed89..ea81e5608e55 100644 +index 611f164d08e9..4310e6e40eb8 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c -@@ -498,6 +498,8 @@ void __init hyperv_init(void) +@@ -504,6 +504,8 @@ void __init hyperv_init(void) x86_init.irqs.create_pci_msi_domain = hv_create_pci_msi_domain; #endif @@ -2883,7 +2883,7 @@ index f5a8f057ed89..ea81e5608e55 100644 return; remove_cpuhp_state: -@@ -601,7 +603,7 @@ EXPORT_SYMBOL_GPL(hv_is_hibernation_supported); +@@ -607,7 +609,7 @@ EXPORT_SYMBOL_GPL(hv_is_hibernation_supported); enum hv_isolation_type hv_get_isolation_type(void) { @@ -2892,7 +2892,7 @@ index f5a8f057ed89..ea81e5608e55 100644 return HV_ISOLATION_TYPE_NONE; return FIELD_GET(HV_ISOLATION_TYPE, ms_hyperv.isolation_config_b); } -@@ -612,3 +614,50 @@ bool hv_is_isolation_supported(void) +@@ -618,3 +620,50 @@ bool hv_is_isolation_supported(void) return hv_get_isolation_type() != HV_ISOLATION_TYPE_NONE; } EXPORT_SYMBOL_GPL(hv_is_isolation_supported); @@ -2944,7 +2944,7 @@ index f5a8f057ed89..ea81e5608e55 100644 +} +EXPORT_SYMBOL_GPL(hv_query_ext_cap); diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c -index 9fde437f53ea..16a5a901cde3 100644 +index 3e0069392158..ee05956e3377 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -274,12 +274,13 @@ static void __init ms_hyperv_init_platform(void) @@ -2986,7 +2986,7 @@ index 79e5356a737a..66c794d92391 100644 Select this option to enable Hyper-V Balloon driver. diff --git a/drivers/hv/hv_balloon.c b/drivers/hv/hv_balloon.c -index eb56e09ae15f..61b995ff00e3 100644 +index 6a716996a625..d6f69aa42253 100644 --- a/drivers/hv/hv_balloon.c +++ b/drivers/hv/hv_balloon.c @@ -21,6 +21,7 @@ @@ -3439,10 +3439,10 @@ index 284e73661a18..ca581b24974a 100644 static void hv_send_ipi(int cpu, int vector) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index ea81e5608e55..1c194e287866 100644 +index 4310e6e40eb8..3b70b61508e3 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c -@@ -347,7 +347,7 @@ static void __init hv_get_partition_id(void) +@@ -353,7 +353,7 @@ static void __init hv_get_partition_id(void) local_irq_save(flags); output_page = *this_cpu_ptr(hyperv_pcpu_output_arg); status = hv_do_hypercall(HVCALL_GET_PARTITION_ID, NULL, output_page); @@ -3647,7 +3647,7 @@ index cca8d5ea61f0..3b1ba6c607a1 100644 int hv_synic_alloc(void) diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c -index 7fd8cd554675..98aa92742198 100644 +index 45f745b114bf..ddf7965606f3 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c @@ -1291,7 +1291,7 @@ static void hv_irq_unmask(struct irq_data *data) @@ -3736,7 +3736,7 @@ Reviewed-by: Michael Kelley 1 file changed, 3 insertions(+), 31 deletions(-) diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c -index 98aa92742198..64df545b6dcf 100644 +index ddf7965606f3..122c0567bc0e 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c @@ -452,7 +452,6 @@ struct hv_pcibus_device { @@ -3765,7 +3765,7 @@ index 98aa92742198..64df545b6dcf 100644 /* * There is no good way to get notified from vmbus_onoffer_rescind(), * so let's use polling here, since this is not a hot path. -@@ -2067,10 +2062,8 @@ static void pci_devices_present_work(struct work_struct *work) +@@ -2076,10 +2071,8 @@ static void pci_devices_present_work(struct work_struct *work) } spin_unlock_irqrestore(&hbus->device_list_lock, flags); @@ -3777,7 +3777,7 @@ index 98aa92742198..64df545b6dcf 100644 /* First, mark all existing children as reported missing. */ spin_lock_irqsave(&hbus->device_list_lock, flags); -@@ -2153,7 +2146,6 @@ static void pci_devices_present_work(struct work_struct *work) +@@ -2162,7 +2155,6 @@ static void pci_devices_present_work(struct work_struct *work) break; } @@ -3785,7 +3785,7 @@ index 98aa92742198..64df545b6dcf 100644 kfree(dr); } -@@ -2194,12 +2186,10 @@ static int hv_pci_start_relations_work(struct hv_pcibus_device *hbus, +@@ -2203,12 +2195,10 @@ static int hv_pci_start_relations_work(struct hv_pcibus_device *hbus, list_add_tail(&dr->list_entry, &hbus->dr_list); spin_unlock_irqrestore(&hbus->device_list_lock, flags); @@ -3800,7 +3800,7 @@ index 98aa92742198..64df545b6dcf 100644 return 0; } -@@ -2342,8 +2332,6 @@ static void hv_eject_device_work(struct work_struct *work) +@@ -2351,8 +2341,6 @@ static void hv_eject_device_work(struct work_struct *work) put_pcichild(hpdev); put_pcichild(hpdev); /* hpdev has been freed. Do not use it any more. */ @@ -3809,7 +3809,7 @@ index 98aa92742198..64df545b6dcf 100644 } /** -@@ -2367,7 +2355,6 @@ static void hv_pci_eject_device(struct hv_pci_dev *hpdev) +@@ -2376,7 +2364,6 @@ static void hv_pci_eject_device(struct hv_pci_dev *hpdev) hpdev->state = hv_pcichild_ejecting; get_pcichild(hpdev); INIT_WORK(&hpdev->wrk, hv_eject_device_work); @@ -3817,7 +3817,7 @@ index 98aa92742198..64df545b6dcf 100644 queue_work(hbus->wq, &hpdev->wrk); } -@@ -2967,17 +2954,6 @@ static int hv_send_resources_released(struct hv_device *hdev) +@@ -2976,17 +2963,6 @@ static int hv_send_resources_released(struct hv_device *hdev) return 0; } @@ -3835,7 +3835,7 @@ index 98aa92742198..64df545b6dcf 100644 #define HVPCI_DOM_MAP_SIZE (64 * 1024) static DECLARE_BITMAP(hvpci_dom_map, HVPCI_DOM_MAP_SIZE); -@@ -3097,14 +3073,12 @@ static int hv_pci_probe(struct hv_device *hdev, +@@ -3106,14 +3082,12 @@ static int hv_pci_probe(struct hv_device *hdev, hbus->sysdata.domain = dom; hbus->hdev = hdev; @@ -3850,7 +3850,7 @@ index 98aa92742198..64df545b6dcf 100644 hbus->wq = alloc_ordered_workqueue("hv_pci_%x", 0, hbus->sysdata.domain); if (!hbus->wq) { -@@ -3348,8 +3322,6 @@ static int hv_pci_remove(struct hv_device *hdev) +@@ -3357,8 +3331,6 @@ static int hv_pci_remove(struct hv_device *hdev) hv_pci_free_bridge_windows(hbus); irq_domain_remove(hbus->irq_domain); irq_domain_free_fwnode(hbus->sysdata.fwnode); @@ -3985,10 +3985,10 @@ index d62447964ed9..2def9d0dd3dd 100644 +SYM_FUNC_END(arm_smccc_1_2_smc) +EXPORT_SYMBOL(arm_smccc_1_2_smc) diff --git a/include/linux/arm-smccc.h b/include/linux/arm-smccc.h -index f860645f6512..ee2d336ff1c1 100644 +index ff38737475ec..d0d78c5ab3d6 100644 --- a/include/linux/arm-smccc.h +++ b/include/linux/arm-smccc.h -@@ -155,6 +155,61 @@ struct arm_smccc_res { +@@ -160,6 +160,61 @@ struct arm_smccc_res { unsigned long a3; }; @@ -4088,10 +4088,10 @@ Signed-off-by: Wei Liu create mode 100644 drivers/hv/hv_common.c diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index 1c194e287866..f879eb81b06d 100644 +index 3b70b61508e3..2fd8fa8fffd6 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c -@@ -614,50 +614,3 @@ bool hv_is_isolation_supported(void) +@@ -620,50 +620,3 @@ bool hv_is_isolation_supported(void) return hv_get_isolation_type() != HV_ISOLATION_TYPE_NONE; } EXPORT_SYMBOL_GPL(hv_is_isolation_supported); @@ -4411,10 +4411,10 @@ Signed-off-by: Lorenzo Pieralisi 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c -index 64df545b6dcf..3cbb04b1e886 100644 +index 122c0567bc0e..17cfbba21d78 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c -@@ -2303,7 +2303,7 @@ static void hv_eject_device_work(struct work_struct *work) +@@ -2312,7 +2312,7 @@ static void hv_eject_device_work(struct work_struct *work) * because hbus->pci_bus may not exist yet. */ wslot = wslot_to_devfn(hpdev->desc.win_slot.slot); @@ -4423,7 +4423,7 @@ index 64df545b6dcf..3cbb04b1e886 100644 if (pdev) { pci_lock_rescan_remove(); pci_stop_and_remove_bus_device(pdev); -@@ -3070,6 +3070,7 @@ static int hv_pci_probe(struct hv_device *hdev, +@@ -3079,6 +3079,7 @@ static int hv_pci_probe(struct hv_device *hdev, "PCI dom# 0x%hx has collision, using 0x%hx", dom_req, dom); @@ -4431,7 +4431,7 @@ index 64df545b6dcf..3cbb04b1e886 100644 hbus->sysdata.domain = dom; hbus->hdev = hdev; -@@ -3080,7 +3081,7 @@ static int hv_pci_probe(struct hv_device *hdev, +@@ -3089,7 +3090,7 @@ static int hv_pci_probe(struct hv_device *hdev, spin_lock_init(&hbus->device_list_lock); spin_lock_init(&hbus->retarget_msi_interrupt_lock); hbus->wq = alloc_ordered_workqueue("hv_pci_%x", 0, @@ -4440,7 +4440,7 @@ index 64df545b6dcf..3cbb04b1e886 100644 if (!hbus->wq) { ret = -ENOMEM; goto free_dom; -@@ -3207,7 +3208,7 @@ static int hv_pci_probe(struct hv_device *hdev, +@@ -3216,7 +3217,7 @@ static int hv_pci_probe(struct hv_device *hdev, destroy_wq: destroy_workqueue(hbus->wq); free_dom: @@ -4449,7 +4449,7 @@ index 64df545b6dcf..3cbb04b1e886 100644 free_bus: kfree(hbus); return ret; -@@ -3323,7 +3324,7 @@ static int hv_pci_remove(struct hv_device *hdev) +@@ -3332,7 +3333,7 @@ static int hv_pci_remove(struct hv_device *hdev) irq_domain_remove(hbus->irq_domain); irq_domain_free_fwnode(hbus->sysdata.fwnode); @@ -4488,7 +4488,7 @@ Signed-off-by: Lorenzo Pieralisi 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c -index 3cbb04b1e886..f9dc82258fdc 100644 +index 17cfbba21d78..ecfd55342da3 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c @@ -449,6 +449,7 @@ enum hv_pcibus_state { @@ -4526,7 +4526,7 @@ index 3cbb04b1e886..f9dc82258fdc 100644 struct hv_pci_dev *hv_dev; list_for_each_entry(dev, &bus->devices, bus_list) { -@@ -1851,24 +1850,25 @@ static void hv_pci_assign_numa_node(struct hv_pcibus_device *hbus) +@@ -1860,24 +1859,25 @@ static void hv_pci_assign_numa_node(struct hv_pcibus_device *hbus) */ static int create_root_hv_pci_bus(struct hv_pcibus_device *hbus) { @@ -4563,7 +4563,7 @@ index 3cbb04b1e886..f9dc82258fdc 100644 pci_unlock_rescan_remove(); hbus->state = hv_pcibus_installed; return 0; -@@ -2131,7 +2131,7 @@ static void pci_devices_present_work(struct work_struct *work) +@@ -2140,7 +2140,7 @@ static void pci_devices_present_work(struct work_struct *work) * because there may have been changes. */ pci_lock_rescan_remove(); @@ -4572,7 +4572,7 @@ index 3cbb04b1e886..f9dc82258fdc 100644 hv_pci_assign_numa_node(hbus); hv_pci_assign_slots(hbus); pci_unlock_rescan_remove(); -@@ -2299,8 +2299,8 @@ static void hv_eject_device_work(struct work_struct *work) +@@ -2308,8 +2308,8 @@ static void hv_eject_device_work(struct work_struct *work) /* * Ejection can come before or after the PCI bus has been set up, so * attempt to find it and tear down the bus state, if it exists. This @@ -4583,7 +4583,7 @@ index 3cbb04b1e886..f9dc82258fdc 100644 */ wslot = wslot_to_devfn(hpdev->desc.win_slot.slot); pdev = pci_get_domain_bus_and_slot(hbus->bridge->domain_nr, 0, wslot); -@@ -2666,8 +2666,7 @@ static int hv_pci_allocate_bridge_windows(struct hv_pcibus_device *hbus) +@@ -2675,8 +2675,7 @@ static int hv_pci_allocate_bridge_windows(struct hv_pcibus_device *hbus) /* Modify this resource to become a bridge window. */ hbus->low_mmio_res->flags |= IORESOURCE_WINDOW; hbus->low_mmio_res->flags &= ~IORESOURCE_BUSY; @@ -4593,7 +4593,7 @@ index 3cbb04b1e886..f9dc82258fdc 100644 } if (hbus->high_mmio_space) { -@@ -2686,8 +2685,7 @@ static int hv_pci_allocate_bridge_windows(struct hv_pcibus_device *hbus) +@@ -2695,8 +2694,7 @@ static int hv_pci_allocate_bridge_windows(struct hv_pcibus_device *hbus) /* Modify this resource to become a bridge window. */ hbus->high_mmio_res->flags |= IORESOURCE_WINDOW; hbus->high_mmio_res->flags &= ~IORESOURCE_BUSY; @@ -4603,7 +4603,7 @@ index 3cbb04b1e886..f9dc82258fdc 100644 } return 0; -@@ -3006,6 +3004,7 @@ static void hv_put_dom_num(u16 dom) +@@ -3015,6 +3013,7 @@ static void hv_put_dom_num(u16 dom) static int hv_pci_probe(struct hv_device *hdev, const struct hv_vmbus_device_id *dev_id) { @@ -4611,7 +4611,7 @@ index 3cbb04b1e886..f9dc82258fdc 100644 struct hv_pcibus_device *hbus; u16 dom_req, dom; char *name; -@@ -3018,6 +3017,10 @@ static int hv_pci_probe(struct hv_device *hdev, +@@ -3027,6 +3026,10 @@ static int hv_pci_probe(struct hv_device *hdev, */ BUILD_BUG_ON(sizeof(*hbus) > HV_HYP_PAGE_SIZE); @@ -4622,7 +4622,7 @@ index 3cbb04b1e886..f9dc82258fdc 100644 /* * With the recent 59bb47985c1d ("mm, sl[aou]b: guarantee natural * alignment for kmalloc(power-of-two)"), kzalloc() is able to allocate -@@ -3039,6 +3042,8 @@ static int hv_pci_probe(struct hv_device *hdev, +@@ -3048,6 +3051,8 @@ static int hv_pci_probe(struct hv_device *hdev, hbus = kzalloc(HV_HYP_PAGE_SIZE, GFP_KERNEL); if (!hbus) return -ENOMEM; @@ -4631,7 +4631,7 @@ index 3cbb04b1e886..f9dc82258fdc 100644 hbus->state = hv_pcibus_init; hbus->wslot_res_allocated = -1; -@@ -3076,7 +3081,6 @@ static int hv_pci_probe(struct hv_device *hdev, +@@ -3085,7 +3090,6 @@ static int hv_pci_probe(struct hv_device *hdev, hbus->hdev = hdev; INIT_LIST_HEAD(&hbus->children); INIT_LIST_HEAD(&hbus->dr_list); @@ -4639,7 +4639,7 @@ index 3cbb04b1e886..f9dc82258fdc 100644 spin_lock_init(&hbus->config_lock); spin_lock_init(&hbus->device_list_lock); spin_lock_init(&hbus->retarget_msi_interrupt_lock); -@@ -3307,9 +3311,9 @@ static int hv_pci_remove(struct hv_device *hdev) +@@ -3316,9 +3320,9 @@ static int hv_pci_remove(struct hv_device *hdev) /* Remove the bus from PCI's point of view. */ pci_lock_rescan_remove(); @@ -4651,7 +4651,7 @@ index 3cbb04b1e886..f9dc82258fdc 100644 pci_unlock_rescan_remove(); } -@@ -3319,7 +3323,6 @@ static int hv_pci_remove(struct hv_device *hdev) +@@ -3328,7 +3332,6 @@ static int hv_pci_remove(struct hv_device *hdev) iounmap(hbus->cfg_addr); hv_free_config_window(hbus); @@ -4659,7 +4659,7 @@ index 3cbb04b1e886..f9dc82258fdc 100644 hv_pci_free_bridge_windows(hbus); irq_domain_remove(hbus->irq_domain); irq_domain_free_fwnode(hbus->sysdata.fwnode); -@@ -3402,7 +3405,7 @@ static int hv_pci_restore_msi_msg(struct pci_dev *pdev, void *arg) +@@ -3411,7 +3414,7 @@ static int hv_pci_restore_msi_msg(struct pci_dev *pdev, void *arg) */ static void hv_pci_restore_msi_state(struct hv_pcibus_device *hbus) { @@ -4727,10 +4727,10 @@ index ece90a23936d..7e4cb5f7c9ca 100644 b = pci_find_bus(pci_domain_nr(bus), bridge->busnr); diff --git a/include/linux/pci.h b/include/linux/pci.h -index a55097b4d992..25b4aa103029 100644 +index bc5a1150f072..77ba6053aeb4 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h -@@ -521,6 +521,16 @@ static inline int pci_channel_offline(struct pci_dev *pdev) +@@ -523,6 +523,16 @@ static inline int pci_channel_offline(struct pci_dev *pdev) return (pdev->error_state != pci_channel_io_normal); } @@ -4747,7 +4747,7 @@ index a55097b4d992..25b4aa103029 100644 struct pci_host_bridge { struct device dev; struct pci_bus *bus; /* Root bus */ -@@ -528,6 +538,7 @@ struct pci_host_bridge { +@@ -530,6 +540,7 @@ struct pci_host_bridge { struct pci_ops *child_ops; void *sysdata; int busnr; @@ -4917,10 +4917,10 @@ Signed-off-by: Wei Liu create mode 100644 arch/arm64/include/asm/mshyperv.h diff --git a/MAINTAINERS b/MAINTAINERS -index 4fef10dd2975..aad9e6c8af38 100644 +index 7c118b507912..d9870f2daade 100644 --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -8154,6 +8154,9 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git +@@ -8153,6 +8153,9 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git F: Documentation/ABI/stable/sysfs-bus-vmbus F: Documentation/ABI/testing/debugfs-hyperv F: Documentation/networking/device_drivers/ethernet/microsoft/netvsc.rst @@ -5489,7 +5489,7 @@ Signed-off-by: Lorenzo Pieralisi 1 file changed, 7 insertions(+) diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c -index f9dc82258fdc..6992e3e89768 100644 +index ecfd55342da3..5fdd22bf2f38 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c @@ -40,6 +40,7 @@ @@ -5512,7 +5512,7 @@ index f9dc82258fdc..6992e3e89768 100644 struct pci_host_bridge *bridge; /* Protocol version negotiated with the host */ enum pci_protocol_version_t protocol_version; -@@ -3076,7 +3081,9 @@ static int hv_pci_probe(struct hv_device *hdev, +@@ -3085,7 +3090,9 @@ static int hv_pci_probe(struct hv_device *hdev, dom_req, dom); hbus->bridge->domain_nr = dom; @@ -5546,7 +5546,7 @@ Signed-off-by: Wei Liu 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c -index 4f9a1d12aa88..7551b5c11a98 100644 +index 937a6b25c6ab..873b7d92e4d1 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c @@ -1398,6 +1398,24 @@ static struct kmsg_dumper hv_kmsg_dumper = { @@ -5642,7 +5642,7 @@ Signed-off-by: Wei Liu 7 files changed, 110 insertions(+), 100 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index f879eb81b06d..48a5c45c09cb 100644 +index 2fd8fa8fffd6..f5bf019cf5d0 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -75,7 +75,7 @@ static int hv_cpu_init(unsigned int cpu) @@ -6043,7 +6043,7 @@ index 3b1ba6c607a1..2fb794d2435d 100644 { struct vmbus_channel *channel, *sc; diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c -index 7551b5c11a98..a5f55839dfaa 100644 +index 873b7d92e4d1..d1c43bd431e7 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c @@ -1505,7 +1505,7 @@ static int vmbus_bus_init(void) @@ -6334,7 +6334,7 @@ index 1a58715a8399..3004d8b2821e 100644 void hyperv_vector_handler(struct pt_regs *regs); diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c -index 16a5a901cde3..76c904d2f2d6 100644 +index ee05956e3377..33d1d759490e 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -60,23 +60,18 @@ DEFINE_IDTENTRY_SYSVEC(sysvec_hyperv_callback) @@ -6402,7 +6402,7 @@ index 08ff1d19824e..147abe31b540 100644 diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c -index a5f55839dfaa..8efac158ea61 100644 +index d1c43bd431e7..b6dfe59e8a8d 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c @@ -48,8 +48,10 @@ static int hyperv_cpuhp_online; @@ -6421,8 +6421,8 @@ index a5f55839dfaa..8efac158ea61 100644 tasklet_schedule(&hv_cpu->msg_dpc); } -- add_interrupt_randomness(hv_get_vector(), 0); -+ add_interrupt_randomness(vmbus_interrupt, 0); +- add_interrupt_randomness(hv_get_vector()); ++ add_interrupt_randomness(vmbus_interrupt); +} + +static irqreturn_t vmbus_percpu_isr(int irq, void *dev_id) @@ -6478,7 +6478,7 @@ index a5f55839dfaa..8efac158ea61 100644 err_setup: bus_unregister(&hv_bus); unregister_sysctl_table(hv_ctl_table_hdr); -@@ -2644,6 +2676,18 @@ static int __init hv_acpi_init(void) +@@ -2647,6 +2679,18 @@ static int __init hv_acpi_init(void) ret = -ETIMEDOUT; goto cleanup; } @@ -6497,7 +6497,7 @@ index a5f55839dfaa..8efac158ea61 100644 hv_debug_init(); ret = vmbus_bus_init(); -@@ -2674,7 +2718,12 @@ static void __exit vmbus_exit(void) +@@ -2677,7 +2721,12 @@ static void __exit vmbus_exit(void) vmbus_connection.conn_state = DISCONNECTED; hv_stimer_global_cleanup(); vmbus_disconnect(); @@ -6576,10 +6576,10 @@ Signed-off-by: Wei Liu 6 files changed, 120 insertions(+), 72 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index 48a5c45c09cb..64b6ebbb1a06 100644 +index f5bf019cf5d0..5f1a6bffab14 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c -@@ -327,7 +327,7 @@ static void __init hv_stimer_setup_percpu_clockev(void) +@@ -333,7 +333,7 @@ static void __init hv_stimer_setup_percpu_clockev(void) * Ignore any errors in setting up stimer clockevents * as we can run with the LAPIC timer as a fallback. */ @@ -6604,7 +6604,7 @@ index 3004d8b2821e..67ff0d637e55 100644 extern int hyperv_init_cpuhp; diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c -index 76c904d2f2d6..9ddc74e475ca 100644 +index 33d1d759490e..3ed63fd87895 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -90,21 +90,17 @@ DEFINE_IDTENTRY_SYSVEC(sysvec_hyperv_stimer0) @@ -6949,7 +6949,7 @@ Signed-off-by: Wei Liu 5 files changed, 158 insertions(+), 88 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index 64b6ebbb1a06..8e4c05ba541f 100644 +index 5f1a6bffab14..5f2515a07c28 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -39,48 +39,17 @@ EXPORT_SYMBOL_GPL(hv_hypercall_pg); @@ -7005,19 +7005,19 @@ index 64b6ebbb1a06..8e4c05ba541f 100644 if (!hv_vp_assist_page) return 0; -@@ -198,25 +167,8 @@ static int hv_cpu_die(unsigned int cpu) +@@ -204,25 +173,8 @@ static int hv_cpu_die(unsigned int cpu) { struct hv_reenlightenment_control re_ctrl; unsigned int new_cpu; - unsigned long flags; - void **input_arg; - void *pg; - +- - local_irq_save(flags); - input_arg = (void **)this_cpu_ptr(hyperv_pcpu_input_arg); - pg = *input_arg; - *input_arg = NULL; -- + - if (hv_root_partition) { - void **output_arg; - @@ -7032,7 +7032,7 @@ index 64b6ebbb1a06..8e4c05ba541f 100644 if (hv_vp_assist_page && hv_vp_assist_page[cpu]) wrmsrl(HV_X64_MSR_VP_ASSIST_PAGE, 0); -@@ -368,7 +320,7 @@ void __init hyperv_init(void) +@@ -374,7 +326,7 @@ void __init hyperv_init(void) { u64 guest_id, required_msrs; union hv_x64_msr_hypercall_contents hypercall_msr; @@ -7041,7 +7041,7 @@ index 64b6ebbb1a06..8e4c05ba541f 100644 if (x86_hyper_type != X86_HYPER_MS_HYPERV) return; -@@ -380,36 +332,14 @@ void __init hyperv_init(void) +@@ -386,36 +338,14 @@ void __init hyperv_init(void) if ((ms_hyperv.features & required_msrs) != required_msrs) return; @@ -7080,7 +7080,7 @@ index 64b6ebbb1a06..8e4c05ba541f 100644 } cpuhp = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "x86/hyperv_init:online", -@@ -507,9 +437,8 @@ void __init hyperv_init(void) +@@ -513,9 +443,8 @@ void __init hyperv_init(void) free_vp_assist_page: kfree(hv_vp_assist_page); hv_vp_assist_page = NULL; @@ -7115,7 +7115,7 @@ index 67ff0d637e55..adccbc209169 100644 void hv_apic_init(void); void __init hv_init_spinlocks(void); diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c -index 9ddc74e475ca..79223a0c863e 100644 +index 3ed63fd87895..5bcca9c71dc4 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -35,10 +35,7 @@ @@ -7346,10 +7346,10 @@ Signed-off-by: Wei Liu 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index 8e4c05ba541f..0ec2222e35fe 100644 +index 5f2515a07c28..ac218fae0114 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c -@@ -468,7 +468,6 @@ void hyperv_cleanup(void) +@@ -474,7 +474,6 @@ void hyperv_cleanup(void) hypercall_msr.as_uint64 = 0; wrmsrl(HV_X64_MSR_REFERENCE_TSC, hypercall_msr.as_uint64); } @@ -7357,13 +7357,13 @@ index 8e4c05ba541f..0ec2222e35fe 100644 void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die) { -@@ -542,4 +541,3 @@ bool hv_is_isolation_supported(void) +@@ -548,4 +547,3 @@ bool hv_is_isolation_supported(void) { return hv_get_isolation_type() != HV_ISOLATION_TYPE_NONE; } -EXPORT_SYMBOL_GPL(hv_is_isolation_supported); diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c -index 79223a0c863e..617b7f35cc8f 100644 +index 5bcca9c71dc4..ecc4bf9a28e4 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -61,14 +61,12 @@ void hv_setup_vmbus_handler(void (*handler)(void)) @@ -7498,7 +7498,7 @@ Signed-off-by: Lorenzo Pieralisi 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c -index 6992e3e89768..f6ee9f359a75 100644 +index 5fdd22bf2f38..39ec86b43f92 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c @@ -455,6 +455,7 @@ struct hv_pcibus_device { @@ -7527,7 +7527,7 @@ index 6992e3e89768..f6ee9f359a75 100644 return 0; } -@@ -3129,9 +3132,9 @@ static int hv_pci_probe(struct hv_device *hdev, +@@ -3138,9 +3141,9 @@ static int hv_pci_probe(struct hv_device *hdev, goto unmap; } @@ -7539,7 +7539,7 @@ index 6992e3e89768..f6ee9f359a75 100644 ret = -ENOMEM; goto unmap; } -@@ -3209,7 +3212,7 @@ static int hv_pci_probe(struct hv_device *hdev, +@@ -3218,7 +3221,7 @@ static int hv_pci_probe(struct hv_device *hdev, free_irq_domain: irq_domain_remove(hbus->irq_domain); free_fwnode: @@ -7548,7 +7548,7 @@ index 6992e3e89768..f6ee9f359a75 100644 unmap: iounmap(hbus->cfg_addr); free_config: -@@ -3332,7 +3335,7 @@ static int hv_pci_remove(struct hv_device *hdev) +@@ -3341,7 +3344,7 @@ static int hv_pci_remove(struct hv_device *hdev) hv_free_config_window(hbus); hv_pci_free_bridge_windows(hbus); irq_domain_remove(hbus->irq_domain); @@ -7585,7 +7585,7 @@ Signed-off-by: Wei Liu 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c -index 0ec2222e35fe..5f2dae6c33d5 100644 +index ac218fae0114..a25138a5ef1b 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -7,10 +7,10 @@ @@ -7600,7 +7600,7 @@ index 0ec2222e35fe..5f2dae6c33d5 100644 #include #include #include -@@ -523,12 +523,6 @@ bool hv_is_hyperv_initialized(void) +@@ -529,12 +529,6 @@ bool hv_is_hyperv_initialized(void) } EXPORT_SYMBOL_GPL(hv_is_hyperv_initialized); @@ -7614,7 +7614,7 @@ index 0ec2222e35fe..5f2dae6c33d5 100644 { if (!(ms_hyperv.priv_high & HV_ISOLATION)) diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c -index 617b7f35cc8f..c91c4c1aa2c8 100644 +index ecc4bf9a28e4..06a0a425ef2f 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -321,16 +321,6 @@ static void __init ms_hyperv_init_platform(void) diff --git a/SPECS/kernel.spec b/SPECS/kernel.spec index 415b9e3..abb7bb8 100644 --- a/SPECS/kernel.spec +++ b/SPECS/kernel.spec @@ -94,7 +94,7 @@ Summary: The Linux kernel %if 0%{?released_kernel} # Do we have a -stable update to apply? -%define stable_update 117 +%define stable_update 123 # Set rpm version accordingly %if 0%{?stable_update} %define stablerev %{stable_update} @@ -3011,6 +3011,9 @@ fi # # %changelog +* Sun Jun 19 2022 Pablo Greco - 5.10.123-200 +- Update to version v5.10.123 + * Sat May 21 2022 Pablo Greco - 5.10.117-200 - Update to version v5.10.117