From patchwork Thu Nov 4 12:54:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550890 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=P4pLml7L; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNsb1CvTz9sRR for ; Thu, 4 Nov 2021 23:55:29 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micGy-0004Nu-TU; Thu, 04 Nov 2021 12:55:16 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micGx-0004NK-Eh for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:15 +0000 Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id EE4173F1BE for ; Thu, 4 Nov 2021 12:55:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030514; bh=HPE5R1xEcBGPC3AKrr4GbK+so6qDlWxqAL+e0f3ando=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=P4pLml7L8z+A3sekZt+VtvAUPVAielHwgQSBkYnxj//2tXKMVBo+LRNgZ1H72cxh6 0HO7ck8X28UqSkrkbudHZbtrC1GDHB8B1eFAg+mG19la+Ss712oY37AdVlxCGWQPuo mON9xNUrHZWs2tRWKR/BU4k4Ws+wv7z6kvfrMr0eR9AykxKkstq1jISBnHC+sf/BHV qwpgb4XhXG/q28GqNyqO0xng1o2eIGWMGYuW9YBGnao5I3kKej/9b7GRnrkzvUzVKe tdwZGhB+/a9Ztusj3CzHCIaiY4XqY/xv6JKhoyI5/UQ5LRObNBkeOPj3vt4Bz/GR5C Cb/YGpG7+MKOQ== Received: by mail-pg1-f198.google.com with SMTP id z7-20020a63c047000000b0026b13e40309so3619478pgi.19 for ; Thu, 04 Nov 2021 05:55:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HPE5R1xEcBGPC3AKrr4GbK+so6qDlWxqAL+e0f3ando=; b=gBurWUNvD2ZrH3Gh9pC897+C0VMeq1nh0uafWcrVxT10AMRMO4jt2zTBCUUnO+9inP S7XZj/S5hMxTswALWRCUnSwdWR8otT2fj3U5Yju+swQcpwMeMh57lEvrsK1gA2AyxZvs dFJOLESyGThSTni+4RnxmUuDoyPrQM2zvVyB1nesjhQNqUTosiBBUum+mFFsQN/K52+F vKRlFsxJZR2k/51uhbkjTf0X6YWr9Z1WEcwWKD1GiWfhLLwX9zuDn8JYHzAhejhlaDKP 97zqXSygjSnHDxc//k1V2bhEvxAwvAv9XlGtXuybBUlD83HFLrFi8gnaRLNMmHaPwZWr Pj0Q== X-Gm-Message-State: AOAM531Wnke3fjT/rheuTBoGub2tbsXv188iJkgL05WYtGAywAryLUd2 VlCu+/ksi7Bsq/SOtK/Cr6x02iAkZrXjv57PIVPoP/gX3kIv1zCCScpDRvxHWe8B3aZ4eZl3u0T 2Qch+C+33H92e0jnSa0ijN0X2LfimdzebJuYbhFSkNQ== X-Received: by 2002:a63:7504:: with SMTP id q4mr38267687pgc.103.1636030512228; Thu, 04 Nov 2021 05:55:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwxMr5YmCvGmeulA3Cw+mKSO+JAeyMGY5tfaOA7/c/auf7bVubf/h6rAw1oVqcpq857qLIjmg== X-Received: by 2002:a63:7504:: with SMTP id q4mr38267657pgc.103.1636030511813; Thu, 04 Nov 2021 05:55:11 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:11 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 01/41] Drivers: hv: vmbus: Move Hyper-V page allocator to arch neutral code Date: Thu, 4 Nov 2021 06:54:09 -0600 Message-Id: <20211104125449.16540-2-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 The Hyper-V page allocator functions are implemented in an architecture neutral way. Move them into the architecture neutral VMbus module so a separate implementation for ARM64 is not needed. No functional change. Signed-off-by: Michael Kelley Reviewed-by: Boqun Feng Link: https://lore.kernel.org/r/1614721102-2241-2-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (cherry picked from commit ca48739e59df31d16c27dbcd9ea2ea61d7caa9fb) Signed-off-by: Marcelo Henrique Cerri --- arch/x86/hyperv/hv_init.c | 22 -------------------- arch/x86/include/asm/mshyperv.h | 5 ----- drivers/hv/hv.c | 36 +++++++++++++++++++++++++++++++++ include/asm-generic/mshyperv.h | 4 ++++ 4 files changed, 40 insertions(+), 27 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c index e927e0fa1f02..1d3e90249425 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -55,28 +55,6 @@ EXPORT_SYMBOL_GPL(hyperv_pcpu_input_arg); u32 hv_max_vp_index; EXPORT_SYMBOL_GPL(hv_max_vp_index); -void *hv_alloc_hyperv_page(void) -{ - BUILD_BUG_ON(PAGE_SIZE != HV_HYP_PAGE_SIZE); - - return (void *)__get_free_page(GFP_KERNEL); -} -EXPORT_SYMBOL_GPL(hv_alloc_hyperv_page); - -void *hv_alloc_hyperv_zeroed_page(void) -{ - BUILD_BUG_ON(PAGE_SIZE != HV_HYP_PAGE_SIZE); - - return (void *)__get_free_page(GFP_KERNEL | __GFP_ZERO); -} -EXPORT_SYMBOL_GPL(hv_alloc_hyperv_zeroed_page); - -void hv_free_hyperv_page(unsigned long addr) -{ - free_page(addr); -} -EXPORT_SYMBOL_GPL(hv_free_hyperv_page); - static int hv_cpu_init(unsigned int cpu) { u64 msr_vp_index; diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h index 30f76b966857..0f70bbaefff0 100644 --- a/arch/x86/include/asm/mshyperv.h +++ b/arch/x86/include/asm/mshyperv.h @@ -226,9 +226,6 @@ static inline struct hv_vp_assist_page *hv_get_vp_assist_page(unsigned int cpu) void __init hyperv_init(void); void hyperv_setup_mmu_ops(void); -void *hv_alloc_hyperv_page(void); -void *hv_alloc_hyperv_zeroed_page(void); -void hv_free_hyperv_page(unsigned long addr); void set_hv_tscchange_cb(void (*cb)(void)); void clear_hv_tscchange_cb(void); void hyperv_stop_tsc_emulation(void); @@ -257,8 +254,6 @@ static inline void hv_set_msi_entry_from_desc(union hv_msi_entry *msi_entry, #else /* CONFIG_HYPERV */ static inline void hyperv_init(void) {} static inline void hyperv_setup_mmu_ops(void) {} -static inline void *hv_alloc_hyperv_page(void) { return NULL; } -static inline void hv_free_hyperv_page(unsigned long addr) {} static inline void set_hv_tscchange_cb(void (*cb)(void)) {} static inline void clear_hv_tscchange_cb(void) {} static inline void hyperv_stop_tsc_emulation(void) {}; diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c index f202ac7f4b3d..cca8d5ea61f0 100644 --- a/drivers/hv/hv.c +++ b/drivers/hv/hv.c @@ -36,6 +36,42 @@ int hv_init(void) return 0; } +/* + * Functions for allocating and freeing memory with size and + * alignment HV_HYP_PAGE_SIZE. These functions are needed because + * the guest page size may not be the same as the Hyper-V page + * size. We depend upon kmalloc() aligning power-of-two size + * allocations to the allocation size boundary, so that the + * allocated memory appears to Hyper-V as a page of the size + * it expects. + */ + +void *hv_alloc_hyperv_page(void) +{ + BUILD_BUG_ON(PAGE_SIZE < HV_HYP_PAGE_SIZE); + + if (PAGE_SIZE == HV_HYP_PAGE_SIZE) + return (void *)__get_free_page(GFP_KERNEL); + else + return kmalloc(HV_HYP_PAGE_SIZE, GFP_KERNEL); +} + +void *hv_alloc_hyperv_zeroed_page(void) +{ + if (PAGE_SIZE == HV_HYP_PAGE_SIZE) + return (void *)__get_free_page(GFP_KERNEL | __GFP_ZERO); + else + return kzalloc(HV_HYP_PAGE_SIZE, GFP_KERNEL); +} + +void hv_free_hyperv_page(unsigned long addr) +{ + if (PAGE_SIZE == HV_HYP_PAGE_SIZE) + free_page(addr); + else + kfree((void *)addr); +} + /* * hv_post_message - Post a message using the hypervisor message IPC. * diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h index c57799684170..762d3acb213f 100644 --- a/include/asm-generic/mshyperv.h +++ b/include/asm-generic/mshyperv.h @@ -114,6 +114,10 @@ extern u32 hv_max_vp_index; /* Sentinel value for an uninitialized entry in hv_vp_index array */ #define VP_INVAL U32_MAX +void *hv_alloc_hyperv_page(void); +void *hv_alloc_hyperv_zeroed_page(void); +void hv_free_hyperv_page(unsigned long addr); + /** * hv_cpu_number_to_vp_number() - Map CPU to VP. * @cpu_number: CPU number in Linux terms From patchwork Thu Nov 4 12:54:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550892 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=C2CaZs0n; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNsb1666z9s0r for ; Thu, 4 Nov 2021 23:55:30 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micH1-0004Q3-El; Thu, 04 Nov 2021 12:55:19 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micGx-0004NM-TA for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:15 +0000 Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 253473F1C0 for ; Thu, 4 Nov 2021 12:55:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030515; bh=vNCRx7wgnQG7W9nV0QzXS1a2oMQ0IErlrDmDNJ4WQt0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=C2CaZs0nXuxO6RacGJCdQyruR5T3zncLg44XwY8210A9hdJJOnzEbVkDc1wQX2x8L FenrapJXYcAXNv5ciBg95RaMfjzYwYt3YxzgQfbcUHp/bCUg5DFrnDD8yeJAYAM+tp skITY0KF8XR1G8jYEHlcCViqsYuVmm7R9SjXhghkbgJKuViCLiow+qzSC2gYbWcPQk ysn33ejTau1Ik6VVEXk4n+CpnKJO0gxrrrEmrWpNABMtr4xajCy57yGlR5AjGaPUuG +oDmybKxBpCAusdtcTNloM0eZkLJS70M0V7MI5xM7QjvgiPmzGkuyDR8EYksj6/Nwy djN7Bs4BxsO5w== Received: by mail-pf1-f198.google.com with SMTP id c140-20020a624e92000000b0044d3de98438so3733620pfb.14 for ; Thu, 04 Nov 2021 05:55:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vNCRx7wgnQG7W9nV0QzXS1a2oMQ0IErlrDmDNJ4WQt0=; b=HM+k11BWN/yNyl+Sjks47bqt8E5ihEO+8oWtQpz0X/UdivtGGEv7GxlBR8lOJttKQt gLDi98BCSVU2gk6n9McEVM0U5LmjTMw5yRhFH6Y4J9rIRbCP5kTTgrgVQ8gcSKNUDIuH lyVyB50VJ5YdRDv4bglBlLZxsIHrpwBOrqQDnc2v61XgoutzR800Bka/aTHBtLEqjaWp 9S5opY/CkUkjPHMyp7ykRAtc0kDJxsTbgXChJXBZyj1+IZQsjJaUVn7W4iYzxMLCeLpc x+DXDUDDIyy1N1owcE+dhi+NwYK/7AlHtQHl7gP4TJQuKbI1I5ceVJvyKcG5o3P3PU+q Ioxg== X-Gm-Message-State: AOAM531dzz7mqYN+4xLKOx6ozSv8gmimaiS96jb6XRWyP1sw8udi0YaR pmyQ8zgjWSuTpV7WXqNui0LIu1w1/uB8QfYmh0zhecesAXdil0eP6kIdC3mfRcIqDIGaDnlyBwn msm+CC0vLkbxweGzXgr182VgKBvytXavFFJ9Cc36bBA== X-Received: by 2002:a17:90b:4c4c:: with SMTP id np12mr21705183pjb.68.1636030512939; Thu, 04 Nov 2021 05:55:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJybGl1ngzUKHXnUkUnPVUOfYMMfmypV8TUsEv1imjNDnxStAJ2cCbvkZjIUKUE/PO3I6n6XtA== X-Received: by 2002:a17:90b:4c4c:: with SMTP id np12mr21705144pjb.68.1636030512560; Thu, 04 Nov 2021 05:55:12 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:12 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 02/41] x86/hyper-v: Move hv_message_type to architecture neutral module Date: Thu, 4 Nov 2021 06:54:10 -0600 Message-Id: <20211104125449.16540-3-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 The definition of enum hv_message_type includes arch neutral and x86/x64-specific values. Ideally there would be a way to put the arch neutral values in an arch neutral module, and the arch specific values in an arch specific module. But C doesn't provide a way to extend enum types. As a compromise, move the entire definition into an arch neutral module, to avoid duplicating the arch neutral values for x86/x64 and for ARM64. No functional change. Signed-off-by: Michael Kelley Reviewed-by: Boqun Feng Link: https://lore.kernel.org/r/1614721102-2241-3-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (cherry picked from commit 5e4e6ddf8d74068fd6bb7922dabcfa2c0f506c39) Signed-off-by: Marcelo Henrique Cerri --- arch/x86/include/asm/hyperv-tlfs.h | 29 ------------------------- include/asm-generic/hyperv-tlfs.h | 35 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 29 deletions(-) diff --git a/arch/x86/include/asm/hyperv-tlfs.h b/arch/x86/include/asm/hyperv-tlfs.h index 6bf42aed387e..dd74066eaa01 100644 --- a/arch/x86/include/asm/hyperv-tlfs.h +++ b/arch/x86/include/asm/hyperv-tlfs.h @@ -263,35 +263,6 @@ struct hv_tsc_emulation_status { #define HV_X64_MSR_TSC_REFERENCE_ENABLE 0x00000001 #define HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT 12 - -/* Define hypervisor message types. */ -enum hv_message_type { - HVMSG_NONE = 0x00000000, - - /* Memory access messages. */ - HVMSG_UNMAPPED_GPA = 0x80000000, - HVMSG_GPA_INTERCEPT = 0x80000001, - - /* Timer notification messages. */ - HVMSG_TIMER_EXPIRED = 0x80000010, - - /* Error messages. */ - HVMSG_INVALID_VP_REGISTER_VALUE = 0x80000020, - HVMSG_UNRECOVERABLE_EXCEPTION = 0x80000021, - HVMSG_UNSUPPORTED_FEATURE = 0x80000022, - - /* Trace buffer complete messages. */ - HVMSG_EVENTLOG_BUFFERCOMPLETE = 0x80000040, - - /* Platform-specific processor intercept messages. */ - HVMSG_X64_IOPORT_INTERCEPT = 0x80010000, - HVMSG_X64_MSR_INTERCEPT = 0x80010001, - HVMSG_X64_CPUID_INTERCEPT = 0x80010002, - HVMSG_X64_EXCEPTION_INTERCEPT = 0x80010003, - HVMSG_X64_APIC_EOI = 0x80010004, - HVMSG_X64_LEGACY_FP_ERROR = 0x80010005 -}; - struct hv_nested_enlightenments_control { struct { __u32 directhypercall:1; diff --git a/include/asm-generic/hyperv-tlfs.h b/include/asm-generic/hyperv-tlfs.h index e73a11850055..d06f7b1cbd85 100644 --- a/include/asm-generic/hyperv-tlfs.h +++ b/include/asm-generic/hyperv-tlfs.h @@ -213,6 +213,41 @@ enum HV_GENERIC_SET_FORMAT { #define HV_MESSAGE_PAYLOAD_BYTE_COUNT (240) #define HV_MESSAGE_PAYLOAD_QWORD_COUNT (30) +/* + * Define hypervisor message types. Some of the message types + * are x86/x64 specific, but there's no good way to separate + * them out into the arch-specific version of hyperv-tlfs.h + * because C doesn't provide a way to extend enum types. + * Keeping them all in the arch neutral hyperv-tlfs.h seems + * the least messy compromise. + */ +enum hv_message_type { + HVMSG_NONE = 0x00000000, + + /* Memory access messages. */ + HVMSG_UNMAPPED_GPA = 0x80000000, + HVMSG_GPA_INTERCEPT = 0x80000001, + + /* Timer notification messages. */ + HVMSG_TIMER_EXPIRED = 0x80000010, + + /* Error messages. */ + HVMSG_INVALID_VP_REGISTER_VALUE = 0x80000020, + HVMSG_UNRECOVERABLE_EXCEPTION = 0x80000021, + HVMSG_UNSUPPORTED_FEATURE = 0x80000022, + + /* Trace buffer complete messages. */ + HVMSG_EVENTLOG_BUFFERCOMPLETE = 0x80000040, + + /* Platform-specific processor intercept messages. */ + HVMSG_X64_IOPORT_INTERCEPT = 0x80010000, + HVMSG_X64_MSR_INTERCEPT = 0x80010001, + HVMSG_X64_CPUID_INTERCEPT = 0x80010002, + HVMSG_X64_EXCEPTION_INTERCEPT = 0x80010003, + HVMSG_X64_APIC_EOI = 0x80010004, + HVMSG_X64_LEGACY_FP_ERROR = 0x80010005 +}; + /* Define synthetic interrupt controller message flags. */ union hv_message_flags { __u8 asu8; From patchwork Thu Nov 4 12:54:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550897 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=QIipmXue; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNsg26fZz9s0r for ; Thu, 4 Nov 2021 23:55:35 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micH6-0004V1-0R; Thu, 04 Nov 2021 12:55:24 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micH1-0004Q5-Hj for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:19 +0000 Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 2EEC73F1C0 for ; Thu, 4 Nov 2021 12:55:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030518; bh=cenaddt2SvjCYAU+P8LZS2hGokGX3GQWvymHZCKVdIM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=QIipmXueiJxLIYvvZHHCgsK/043ZMzbqcOsHCcPl49HIdZ2rPC4NxOwwmoJweYbVd PdITZg4rbsQT/cZImVyamDG2ZC7hSNYNO1fdqpLkHK9N1BWVpVBdu9k4jF6NZtOAtL wAnp+JZLTaz0ec7mxIULjgKq1ikfrUNqNfZjsZlH3Sd+KfGgUU9XhtMe3LmBfdSCRA G7cQky8Xeu2gA+fzK6twxaxtkDepOav3ILXt8vtpVPGBKPlKnmNzdo7+Kq3XT6MT7Y 7JF8BbMQyp/Vn/nH/UBBiC677qlhSA1aFSqBZ4pp89pThF8AyJN/XojAkzKhabm/Bu Jdi6V5xFHz66g== Received: by mail-pg1-f200.google.com with SMTP id m74-20020a633f4d000000b0029fed7e61f9so3632991pga.16 for ; Thu, 04 Nov 2021 05:55:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cenaddt2SvjCYAU+P8LZS2hGokGX3GQWvymHZCKVdIM=; b=HWBPJ3KKXLPGqDQ+exlPl9XtYBrL36pUn/yWzqCNrvvaGNSjCVLnEYaWMmtn8H49PY quPfUNg4b/4WoWBDDyccVvCLNnFugzTSIKiLomPa1ts/jA5rJXo8VFcv4s3aIqYN3JtQ 077OWDPd4VXLFpfW4YrjTaWp0fiqtUoLolavJraO2KLaBk6byH18RojnabquFahN92We Y0vaWIO4/txCPblXJ9p4zJDVGRa9/WRbGXCuqDIhnA3cCSo9wh8hldBYIKUja2WFNhTY DQf9uBObdaFlhPn3DNplvjE1mBHeLrubxvsHOxcSoiBt23KgO+UwS9yF1DBzrk4q0V/Q S1Fw== X-Gm-Message-State: AOAM533EPohG2nwtGso6pacadjScAkdytHfNkk8dn4pYWnCDIK81k+SL GXkwMFpGyVoJ3H+7XYpALmzb2pli3lrFgCALMixA0D9NP3moou0IBOfwIHX7MoKbzaiWZOTWYn0 ULBqdGi0/e+ZtiRGEnYM5WGBBljLbI/ndB1U10u6qpw== X-Received: by 2002:a62:1496:0:b0:47b:d2ba:8791 with SMTP id 144-20020a621496000000b0047bd2ba8791mr51567783pfu.18.1636030513866; Thu, 04 Nov 2021 05:55:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyNnHaQ6zEEA0pSOpuD02zumweclASmkYNzzVzORreJNTDi0scBDwEIvspbL5ZUEvElRApl2A== X-Received: by 2002:a62:1496:0:b0:47b:d2ba:8791 with SMTP id 144-20020a621496000000b0047bd2ba8791mr51567748pfu.18.1636030513380; Thu, 04 Nov 2021 05:55:13 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:13 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 03/41] Drivers: hv: Redo Hyper-V synthetic MSR get/set functions Date: Thu, 4 Nov 2021 06:54:11 -0600 Message-Id: <20211104125449.16540-4-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 Current code defines a separate get and set macro for each Hyper-V synthetic MSR used by the VMbus driver. Furthermore, the get macro can't be converted to a standard function because the second argument is modified in place, which is somewhat bad form. Redo this by providing a single get and a single set function that take a parameter specifying the MSR to be operated on. Fixup usage of the get function. Calling locations are no more complex than before, but the code under arch/x86 and the upcoming code under arch/arm64 is significantly simplified. Also standardize the names of Hyper-V synthetic MSRs that are architecture neutral. But keep the old x86-specific names as aliases that can be removed later when all references (particularly in KVM code) have been cleaned up in a separate patch series. No functional change. Signed-off-by: Michael Kelley Reviewed-by: Boqun Feng Link: https://lore.kernel.org/r/1614721102-2241-4-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (cherry picked from commit f3c5e63c3690fc64e5a7a2b3e4f9f5ff1fa25584) Signed-off-by: Marcelo Henrique Cerri --- arch/x86/hyperv/hv_init.c | 2 +- arch/x86/include/asm/hyperv-tlfs.h | 102 ++++++++++++++++++----------- arch/x86/include/asm/mshyperv.h | 39 +++-------- drivers/clocksource/hyperv_timer.c | 26 ++++---- drivers/hv/hv.c | 37 ++++++----- drivers/hv/vmbus_drv.c | 2 +- include/asm-generic/mshyperv.h | 2 +- 7 files changed, 110 insertions(+), 100 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c index 1d3e90249425..6b65e21a0a24 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -69,7 +69,7 @@ static int hv_cpu_init(unsigned int cpu) return -ENOMEM; *input_arg = page_address(pg); - hv_get_vp_index(msr_vp_index); + msr_vp_index = hv_get_register(HV_REGISTER_VP_INDEX); hv_vp_index[smp_processor_id()] = msr_vp_index; diff --git a/arch/x86/include/asm/hyperv-tlfs.h b/arch/x86/include/asm/hyperv-tlfs.h index dd74066eaa01..c88c42f07301 100644 --- a/arch/x86/include/asm/hyperv-tlfs.h +++ b/arch/x86/include/asm/hyperv-tlfs.h @@ -131,7 +131,7 @@ #define HV_X64_MSR_HYPERCALL 0x40000001 /* MSR used to provide vcpu index */ -#define HV_X64_MSR_VP_INDEX 0x40000002 +#define HV_REGISTER_VP_INDEX 0x40000002 /* MSR used to reset the guest OS. */ #define HV_X64_MSR_RESET 0x40000003 @@ -140,10 +140,10 @@ #define HV_X64_MSR_VP_RUNTIME 0x40000010 /* MSR used to read the per-partition time reference counter */ -#define HV_X64_MSR_TIME_REF_COUNT 0x40000020 +#define HV_REGISTER_TIME_REF_COUNT 0x40000020 /* A partition's reference time stamp counter (TSC) page */ -#define HV_X64_MSR_REFERENCE_TSC 0x40000021 +#define HV_REGISTER_REFERENCE_TSC 0x40000021 /* MSR used to retrieve the TSC frequency */ #define HV_X64_MSR_TSC_FREQUENCY 0x40000022 @@ -158,50 +158,50 @@ #define HV_X64_MSR_VP_ASSIST_PAGE 0x40000073 /* Define synthetic interrupt controller model specific registers. */ -#define HV_X64_MSR_SCONTROL 0x40000080 -#define HV_X64_MSR_SVERSION 0x40000081 -#define HV_X64_MSR_SIEFP 0x40000082 -#define HV_X64_MSR_SIMP 0x40000083 -#define HV_X64_MSR_EOM 0x40000084 -#define HV_X64_MSR_SINT0 0x40000090 -#define HV_X64_MSR_SINT1 0x40000091 -#define HV_X64_MSR_SINT2 0x40000092 -#define HV_X64_MSR_SINT3 0x40000093 -#define HV_X64_MSR_SINT4 0x40000094 -#define HV_X64_MSR_SINT5 0x40000095 -#define HV_X64_MSR_SINT6 0x40000096 -#define HV_X64_MSR_SINT7 0x40000097 -#define HV_X64_MSR_SINT8 0x40000098 -#define HV_X64_MSR_SINT9 0x40000099 -#define HV_X64_MSR_SINT10 0x4000009A -#define HV_X64_MSR_SINT11 0x4000009B -#define HV_X64_MSR_SINT12 0x4000009C -#define HV_X64_MSR_SINT13 0x4000009D -#define HV_X64_MSR_SINT14 0x4000009E -#define HV_X64_MSR_SINT15 0x4000009F +#define HV_REGISTER_SCONTROL 0x40000080 +#define HV_REGISTER_SVERSION 0x40000081 +#define HV_REGISTER_SIEFP 0x40000082 +#define HV_REGISTER_SIMP 0x40000083 +#define HV_REGISTER_EOM 0x40000084 +#define HV_REGISTER_SINT0 0x40000090 +#define HV_REGISTER_SINT1 0x40000091 +#define HV_REGISTER_SINT2 0x40000092 +#define HV_REGISTER_SINT3 0x40000093 +#define HV_REGISTER_SINT4 0x40000094 +#define HV_REGISTER_SINT5 0x40000095 +#define HV_REGISTER_SINT6 0x40000096 +#define HV_REGISTER_SINT7 0x40000097 +#define HV_REGISTER_SINT8 0x40000098 +#define HV_REGISTER_SINT9 0x40000099 +#define HV_REGISTER_SINT10 0x4000009A +#define HV_REGISTER_SINT11 0x4000009B +#define HV_REGISTER_SINT12 0x4000009C +#define HV_REGISTER_SINT13 0x4000009D +#define HV_REGISTER_SINT14 0x4000009E +#define HV_REGISTER_SINT15 0x4000009F /* * Synthetic Timer MSRs. Four timers per vcpu. */ -#define HV_X64_MSR_STIMER0_CONFIG 0x400000B0 -#define HV_X64_MSR_STIMER0_COUNT 0x400000B1 -#define HV_X64_MSR_STIMER1_CONFIG 0x400000B2 -#define HV_X64_MSR_STIMER1_COUNT 0x400000B3 -#define HV_X64_MSR_STIMER2_CONFIG 0x400000B4 -#define HV_X64_MSR_STIMER2_COUNT 0x400000B5 -#define HV_X64_MSR_STIMER3_CONFIG 0x400000B6 -#define HV_X64_MSR_STIMER3_COUNT 0x400000B7 +#define HV_REGISTER_STIMER0_CONFIG 0x400000B0 +#define HV_REGISTER_STIMER0_COUNT 0x400000B1 +#define HV_REGISTER_STIMER1_CONFIG 0x400000B2 +#define HV_REGISTER_STIMER1_COUNT 0x400000B3 +#define HV_REGISTER_STIMER2_CONFIG 0x400000B4 +#define HV_REGISTER_STIMER2_COUNT 0x400000B5 +#define HV_REGISTER_STIMER3_CONFIG 0x400000B6 +#define HV_REGISTER_STIMER3_COUNT 0x400000B7 /* Hyper-V guest idle MSR */ #define HV_X64_MSR_GUEST_IDLE 0x400000F0 /* Hyper-V guest crash notification MSR's */ -#define HV_X64_MSR_CRASH_P0 0x40000100 -#define HV_X64_MSR_CRASH_P1 0x40000101 -#define HV_X64_MSR_CRASH_P2 0x40000102 -#define HV_X64_MSR_CRASH_P3 0x40000103 -#define HV_X64_MSR_CRASH_P4 0x40000104 -#define HV_X64_MSR_CRASH_CTL 0x40000105 +#define HV_REGISTER_CRASH_P0 0x40000100 +#define HV_REGISTER_CRASH_P1 0x40000101 +#define HV_REGISTER_CRASH_P2 0x40000102 +#define HV_REGISTER_CRASH_P3 0x40000103 +#define HV_REGISTER_CRASH_P4 0x40000104 +#define HV_REGISTER_CRASH_CTL 0x40000105 /* TSC emulation after migration */ #define HV_X64_MSR_REENLIGHTENMENT_CONTROL 0x40000106 @@ -211,6 +211,32 @@ /* TSC invariant control */ #define HV_X64_MSR_TSC_INVARIANT_CONTROL 0x40000118 +/* Register name aliases for temporary compatibility */ +#define HV_X64_MSR_STIMER0_COUNT HV_REGISTER_STIMER0_COUNT +#define HV_X64_MSR_STIMER0_CONFIG HV_REGISTER_STIMER0_CONFIG +#define HV_X64_MSR_STIMER1_COUNT HV_REGISTER_STIMER1_COUNT +#define HV_X64_MSR_STIMER1_CONFIG HV_REGISTER_STIMER1_CONFIG +#define HV_X64_MSR_STIMER2_COUNT HV_REGISTER_STIMER2_COUNT +#define HV_X64_MSR_STIMER2_CONFIG HV_REGISTER_STIMER2_CONFIG +#define HV_X64_MSR_STIMER3_COUNT HV_REGISTER_STIMER3_COUNT +#define HV_X64_MSR_STIMER3_CONFIG HV_REGISTER_STIMER3_CONFIG +#define HV_X64_MSR_SCONTROL HV_REGISTER_SCONTROL +#define HV_X64_MSR_SVERSION HV_REGISTER_SVERSION +#define HV_X64_MSR_SIMP HV_REGISTER_SIMP +#define HV_X64_MSR_SIEFP HV_REGISTER_SIEFP +#define HV_X64_MSR_VP_INDEX HV_REGISTER_VP_INDEX +#define HV_X64_MSR_EOM HV_REGISTER_EOM +#define HV_X64_MSR_SINT0 HV_REGISTER_SINT0 +#define HV_X64_MSR_SINT15 HV_REGISTER_SINT15 +#define HV_X64_MSR_CRASH_P0 HV_REGISTER_CRASH_P0 +#define HV_X64_MSR_CRASH_P1 HV_REGISTER_CRASH_P1 +#define HV_X64_MSR_CRASH_P2 HV_REGISTER_CRASH_P2 +#define HV_X64_MSR_CRASH_P3 HV_REGISTER_CRASH_P3 +#define HV_X64_MSR_CRASH_P4 HV_REGISTER_CRASH_P4 +#define HV_X64_MSR_CRASH_CTL HV_REGISTER_CRASH_CTL +#define HV_X64_MSR_TIME_REF_COUNT HV_REGISTER_TIME_REF_COUNT +#define HV_X64_MSR_REFERENCE_TSC HV_REGISTER_REFERENCE_TSC + /* * Declare the MSR used to setup pages used to communicate with the hypervisor. */ diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h index 0f70bbaefff0..21fa98b840f5 100644 --- a/arch/x86/include/asm/mshyperv.h +++ b/arch/x86/include/asm/mshyperv.h @@ -14,41 +14,22 @@ typedef int (*hyperv_fill_flush_list_func)( struct hv_guest_mapping_flush_list *flush, void *data); -#define hv_init_timer(timer, tick) \ - wrmsrl(HV_X64_MSR_STIMER0_COUNT + (2*timer), tick) -#define hv_init_timer_config(timer, val) \ - wrmsrl(HV_X64_MSR_STIMER0_CONFIG + (2*timer), val) - -#define hv_get_simp(val) rdmsrl(HV_X64_MSR_SIMP, val) -#define hv_set_simp(val) wrmsrl(HV_X64_MSR_SIMP, val) - -#define hv_get_siefp(val) rdmsrl(HV_X64_MSR_SIEFP, val) -#define hv_set_siefp(val) wrmsrl(HV_X64_MSR_SIEFP, val) - -#define hv_get_synic_state(val) rdmsrl(HV_X64_MSR_SCONTROL, val) -#define hv_set_synic_state(val) wrmsrl(HV_X64_MSR_SCONTROL, val) +static inline void hv_set_register(unsigned int reg, u64 value) +{ + wrmsrl(reg, value); +} -#define hv_get_vp_index(index) rdmsrl(HV_X64_MSR_VP_INDEX, index) +static inline u64 hv_get_register(unsigned int reg) +{ + u64 value; -#define hv_signal_eom() wrmsrl(HV_X64_MSR_EOM, 0) + rdmsrl(reg, value); + return value; +} -#define hv_get_synint_state(int_num, val) \ - rdmsrl(HV_X64_MSR_SINT0 + int_num, val) -#define hv_set_synint_state(int_num, val) \ - wrmsrl(HV_X64_MSR_SINT0 + int_num, val) #define hv_recommend_using_aeoi() \ (!(ms_hyperv.hints & HV_DEPRECATING_AEOI_RECOMMENDED)) -#define hv_get_crash_ctl(val) \ - rdmsrl(HV_X64_MSR_CRASH_CTL, val) - -#define hv_get_time_ref_count(val) \ - rdmsrl(HV_X64_MSR_TIME_REF_COUNT, val) - -#define hv_get_reference_tsc(val) \ - rdmsrl(HV_X64_MSR_REFERENCE_TSC, val) -#define hv_set_reference_tsc(val) \ - wrmsrl(HV_X64_MSR_REFERENCE_TSC, val) #define hv_set_clocksource_vdso(val) \ ((val).vdso_clock_mode = VDSO_CLOCKMODE_HVCLOCK) #define hv_enable_vdso_clocksource() \ diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c index ba04cb381cd3..942530817aa5 100644 --- a/drivers/clocksource/hyperv_timer.c +++ b/drivers/clocksource/hyperv_timer.c @@ -68,14 +68,14 @@ static int hv_ce_set_next_event(unsigned long delta, current_tick = hv_read_reference_counter(); current_tick += delta; - hv_init_timer(0, current_tick); + hv_set_register(HV_REGISTER_STIMER0_COUNT, current_tick); return 0; } static int hv_ce_shutdown(struct clock_event_device *evt) { - hv_init_timer(0, 0); - hv_init_timer_config(0, 0); + hv_set_register(HV_REGISTER_STIMER0_COUNT, 0); + hv_set_register(HV_REGISTER_STIMER0_CONFIG, 0); if (direct_mode_enabled) hv_disable_stimer0_percpu_irq(stimer0_irq); @@ -105,7 +105,7 @@ static int hv_ce_set_oneshot(struct clock_event_device *evt) timer_cfg.direct_mode = 0; timer_cfg.sintx = stimer0_message_sint; } - hv_init_timer_config(0, timer_cfg.as_uint64); + hv_set_register(HV_REGISTER_STIMER0_CONFIG, timer_cfg.as_uint64); return 0; } @@ -331,7 +331,7 @@ static u64 notrace read_hv_clock_tsc(void) u64 current_tick = hv_read_tsc_page(hv_get_tsc_page()); if (current_tick == U64_MAX) - hv_get_time_ref_count(current_tick); + current_tick = hv_get_register(HV_REGISTER_TIME_REF_COUNT); return current_tick; } @@ -352,9 +352,9 @@ static void suspend_hv_clock_tsc(struct clocksource *arg) u64 tsc_msr; /* Disable the TSC page */ - hv_get_reference_tsc(tsc_msr); + tsc_msr = hv_get_register(HV_REGISTER_REFERENCE_TSC); tsc_msr &= ~BIT_ULL(0); - hv_set_reference_tsc(tsc_msr); + hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr); } @@ -364,10 +364,10 @@ static void resume_hv_clock_tsc(struct clocksource *arg) u64 tsc_msr; /* Re-enable the TSC page */ - hv_get_reference_tsc(tsc_msr); + tsc_msr = hv_get_register(HV_REGISTER_REFERENCE_TSC); tsc_msr &= GENMASK_ULL(11, 0); tsc_msr |= BIT_ULL(0) | (u64)phys_addr; - hv_set_reference_tsc(tsc_msr); + hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr); } static int hv_cs_enable(struct clocksource *cs) @@ -389,14 +389,12 @@ static struct clocksource hyperv_cs_tsc = { static u64 notrace read_hv_clock_msr(void) { - u64 current_tick; /* * Read the partition counter to get the current tick count. This count * is set to 0 when the partition is created and is incremented in * 100 nanosecond units. */ - hv_get_time_ref_count(current_tick); - return current_tick; + return hv_get_register(HV_REGISTER_TIME_REF_COUNT); } static u64 notrace read_hv_clock_msr_cs(struct clocksource *arg) @@ -436,10 +434,10 @@ static bool __init hv_init_tsc_clocksource(void) * (which already has at least the low 12 bits set to zero since * it is page aligned). Also set the "enable" bit, which is bit 0. */ - hv_get_reference_tsc(tsc_msr); + tsc_msr = hv_get_register(HV_REGISTER_REFERENCE_TSC); tsc_msr &= GENMASK_ULL(11, 0); tsc_msr = tsc_msr | 0x1 | (u64)phys_addr; - hv_set_reference_tsc(tsc_msr); + hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr); hv_set_clocksource_vdso(hyperv_cs_tsc); clocksource_register_hz(&hyperv_cs_tsc, NSEC_PER_SEC/100); diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c index cca8d5ea61f0..0c1fa69381f7 100644 --- a/drivers/hv/hv.c +++ b/drivers/hv/hv.c @@ -198,34 +198,36 @@ void hv_synic_enable_regs(unsigned int cpu) union hv_synic_scontrol sctrl; /* Setup the Synic's message page */ - hv_get_simp(simp.as_uint64); + simp.as_uint64 = hv_get_register(HV_REGISTER_SIMP); simp.simp_enabled = 1; simp.base_simp_gpa = virt_to_phys(hv_cpu->synic_message_page) >> HV_HYP_PAGE_SHIFT; - hv_set_simp(simp.as_uint64); + hv_set_register(HV_REGISTER_SIMP, simp.as_uint64); /* Setup the Synic's event page */ - hv_get_siefp(siefp.as_uint64); + siefp.as_uint64 = hv_get_register(HV_REGISTER_SIEFP); siefp.siefp_enabled = 1; siefp.base_siefp_gpa = virt_to_phys(hv_cpu->synic_event_page) >> HV_HYP_PAGE_SHIFT; - hv_set_siefp(siefp.as_uint64); + hv_set_register(HV_REGISTER_SIEFP, siefp.as_uint64); /* Setup the shared SINT. */ - hv_get_synint_state(VMBUS_MESSAGE_SINT, shared_sint.as_uint64); + shared_sint.as_uint64 = hv_get_register(HV_REGISTER_SINT0 + + VMBUS_MESSAGE_SINT); shared_sint.vector = hv_get_vector(); shared_sint.masked = false; shared_sint.auto_eoi = hv_recommend_using_aeoi(); - hv_set_synint_state(VMBUS_MESSAGE_SINT, shared_sint.as_uint64); + hv_set_register(HV_REGISTER_SINT0 + VMBUS_MESSAGE_SINT, + shared_sint.as_uint64); /* Enable the global synic bit */ - hv_get_synic_state(sctrl.as_uint64); + sctrl.as_uint64 = hv_get_register(HV_REGISTER_SCONTROL); sctrl.enable = 1; - hv_set_synic_state(sctrl.as_uint64); + hv_set_register(HV_REGISTER_SCONTROL, sctrl.as_uint64); } int hv_synic_init(unsigned int cpu) @@ -247,32 +249,35 @@ void hv_synic_disable_regs(unsigned int cpu) union hv_synic_siefp siefp; union hv_synic_scontrol sctrl; - hv_get_synint_state(VMBUS_MESSAGE_SINT, shared_sint.as_uint64); + shared_sint.as_uint64 = hv_get_register(HV_REGISTER_SINT0 + + VMBUS_MESSAGE_SINT); shared_sint.masked = 1; /* Need to correctly cleanup in the case of SMP!!! */ /* Disable the interrupt */ - hv_set_synint_state(VMBUS_MESSAGE_SINT, shared_sint.as_uint64); + hv_set_register(HV_REGISTER_SINT0 + VMBUS_MESSAGE_SINT, + shared_sint.as_uint64); - hv_get_simp(simp.as_uint64); + simp.as_uint64 = hv_get_register(HV_REGISTER_SIMP); simp.simp_enabled = 0; simp.base_simp_gpa = 0; - hv_set_simp(simp.as_uint64); + hv_set_register(HV_REGISTER_SIMP, simp.as_uint64); - hv_get_siefp(siefp.as_uint64); + siefp.as_uint64 = hv_get_register(HV_REGISTER_SIEFP); siefp.siefp_enabled = 0; siefp.base_siefp_gpa = 0; - hv_set_siefp(siefp.as_uint64); + hv_set_register(HV_REGISTER_SIEFP, siefp.as_uint64); /* Disable the global synic bit */ - hv_get_synic_state(sctrl.as_uint64); + sctrl.as_uint64 = hv_get_register(HV_REGISTER_SCONTROL); sctrl.enable = 0; - hv_set_synic_state(sctrl.as_uint64); + hv_set_register(HV_REGISTER_SCONTROL, sctrl.as_uint64); } + int hv_synic_cleanup(unsigned int cpu) { struct vmbus_channel *channel, *sc; diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c index d491fdcee61f..18b7403999a8 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c @@ -1494,7 +1494,7 @@ static int vmbus_bus_init(void) * Register for panic kmsg callback only if the right * capability is supported by the hypervisor. */ - hv_get_crash_ctl(hyperv_crash_ctl); + hyperv_crash_ctl = hv_get_register(HV_REGISTER_CRASH_CTL); if (hyperv_crash_ctl & HV_CRASH_CTL_CRASH_NOTIFY_MSG) hv_kmsg_dump_register(); diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h index 762d3acb213f..10c97a9e4027 100644 --- a/include/asm-generic/mshyperv.h +++ b/include/asm-generic/mshyperv.h @@ -85,7 +85,7 @@ static inline void vmbus_signal_eom(struct hv_message *msg, u32 old_msg_type) * possibly deliver another msg from the * hypervisor */ - hv_signal_eom(); + hv_set_register(HV_REGISTER_EOM, 0); } } From patchwork Thu Nov 4 12:54:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550893 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=n7CVqtL0; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNsb1BB0z9sPf for ; Thu, 4 Nov 2021 23:55:29 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micH0-0004OL-4C; Thu, 04 Nov 2021 12:55:18 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micGy-0004Ni-EV for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:16 +0000 Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 3E7393F1F5 for ; Thu, 4 Nov 2021 12:55:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030516; bh=Rubgg3KkhRTKLGh43qvdMdTJOtRlXv1bNw1EoRqbTQ8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=n7CVqtL0yQ3qqRN3EVUhgwcTLZZ1Mnt9Z+LMi1P+HEhUocsuOJFomzakXLt/wX7Bo 36MNQ9TF2+5bBr8UH50yW2oqAxIzWfTVsSXa43oaZofSUgCkCtXyge0shIoQ197aHu S7JlfgZrghUjXUGu/wD/lQySmarXhy9wo+csY4hSTjFAF/BlLhbZy7CgfDHAUBk87u LpxJUOtdMNprNzIHpB/krhb6muYuAF3iue6LAOwTo4F3eEODkUNynUAew42OzwNNI/ mWu877SMjJbzZJbcVhWQssUlaP+oLsptiXr36yxb2OjSPaVBL1MKuqApbDqadB63Zg XMY6RayuU4WVw== Received: by mail-pg1-f199.google.com with SMTP id v63-20020a632f42000000b002cc65837088so3693143pgv.1 for ; Thu, 04 Nov 2021 05:55:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Rubgg3KkhRTKLGh43qvdMdTJOtRlXv1bNw1EoRqbTQ8=; b=y5hVP6TZ6yBbyyAUf/qsGMfx6ZU+Vqwip6JVooBJaAUycS655ckWUktSwhQ9uLPdrw md0O6F1ClD8s3D5seV7/M+g52Q9lKjVDfLybd8G49wOlWNTICnib4gZQWn3fzz8KhStx UCskAQfcYuufV0FEJu0v33RRve8ynOw+LAdyRxYeslWxSo4Hsv/Tp+3BfBR8tAGuCVAt semM9uSv1fAq9w22YY1YK2x760rbclVrW5UvqQPYDXe5bp0GzLmyZRkHGxLxaKazMH9v NBPxWGjnIxnnDKJhoad/U08SCnEImGKgPzrkabylKaB9n/LFsZwg6y85HhuYV36IIqYu /W7w== X-Gm-Message-State: AOAM531u4PFnF8hIdyZdjNK728ppTE8NXK4KZrahpkk1/28kOnJXD6ND LrtHzFGRsi6ktrCY/eI59XSxotvXurXceqBP8B9y1ES8tK5qEhU3shoc75rR9fNPATotixkJjM6 5BVtzAOhEf18+dRhz5Xe6Qt8qMmBA48pCtnWUtynqdA== X-Received: by 2002:a63:6a49:: with SMTP id f70mr30302753pgc.358.1636030514473; Thu, 04 Nov 2021 05:55:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyt61grUNgdklwZ4JfcUbvYgblbCCEobHWvo8RdJb0d6FEfvBvdc1zHhrX3k+v1bC/YpJ08vw== X-Received: by 2002:a63:6a49:: with SMTP id f70mr30302731pgc.358.1636030514137; Thu, 04 Nov 2021 05:55:14 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:13 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 04/41] Drivers: hv: vmbus: Move hyperv_report_panic_msg to arch neutral code Date: Thu, 4 Nov 2021 06:54:12 -0600 Message-Id: <20211104125449.16540-5-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 With the new Hyper-V MSR set function, hyperv_report_panic_msg() can be architecture neutral, so move it out from under arch/x86 and merge into hv_kmsg_dump(). This move also avoids needing a separate implementation under arch/arm64. No functional change. Signed-off-by: Michael Kelley Reviewed-by: Boqun Feng Link: https://lore.kernel.org/r/1614721102-2241-5-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (cherry picked from commit b548a7742791e7818bc2780b2354b9714fd8f8d9) Signed-off-by: Marcelo Henrique Cerri --- arch/x86/hyperv/hv_init.c | 27 --------------------------- drivers/hv/vmbus_drv.c | 24 +++++++++++++++++++----- include/asm-generic/mshyperv.h | 1 - 3 files changed, 19 insertions(+), 33 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c index 6b65e21a0a24..e145a215e5b1 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -487,33 +487,6 @@ void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die) } EXPORT_SYMBOL_GPL(hyperv_report_panic); -/** - * hyperv_report_panic_msg - report panic message to Hyper-V - * @pa: physical address of the panic page containing the message - * @size: size of the message in the page - */ -void hyperv_report_panic_msg(phys_addr_t pa, size_t size) -{ - /* - * P3 to contain the physical address of the panic page & P4 to - * contain the size of the panic data in that page. Rest of the - * registers are no-op when the NOTIFY_MSG flag is set. - */ - wrmsrl(HV_X64_MSR_CRASH_P0, 0); - wrmsrl(HV_X64_MSR_CRASH_P1, 0); - wrmsrl(HV_X64_MSR_CRASH_P2, 0); - wrmsrl(HV_X64_MSR_CRASH_P3, pa); - wrmsrl(HV_X64_MSR_CRASH_P4, size); - - /* - * Let Hyper-V know there is crash data available along with - * the panic message. - */ - wrmsrl(HV_X64_MSR_CRASH_CTL, - (HV_CRASH_CTL_CRASH_NOTIFY | HV_CRASH_CTL_CRASH_NOTIFY_MSG)); -} -EXPORT_SYMBOL_GPL(hyperv_report_panic_msg); - bool hv_is_hyperv_initialized(void) { union hv_x64_msr_hypercall_contents hypercall_msr; diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c index 18b7403999a8..7f61d7b779f3 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c @@ -1365,22 +1365,36 @@ static void hv_kmsg_dump(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason) { size_t bytes_written; - phys_addr_t panic_pa; /* We are only interested in panics. */ if ((reason != KMSG_DUMP_PANIC) || (!sysctl_record_panic_msg)) return; - panic_pa = virt_to_phys(hv_panic_page); - /* * Write dump contents to the page. No need to synchronize; panic should * be single-threaded. */ kmsg_dump_get_buffer(dumper, false, hv_panic_page, HV_HYP_PAGE_SIZE, &bytes_written); - if (bytes_written) - hyperv_report_panic_msg(panic_pa, bytes_written); + if (!bytes_written) + return; + /* + * P3 to contain the physical address of the panic page & P4 to + * contain the size of the panic data in that page. Rest of the + * registers are no-op when the NOTIFY_MSG flag is set. + */ + hv_set_register(HV_REGISTER_CRASH_P0, 0); + hv_set_register(HV_REGISTER_CRASH_P1, 0); + hv_set_register(HV_REGISTER_CRASH_P2, 0); + hv_set_register(HV_REGISTER_CRASH_P3, virt_to_phys(hv_panic_page)); + hv_set_register(HV_REGISTER_CRASH_P4, bytes_written); + + /* + * Let Hyper-V know there is crash data available along with + * the panic message. + */ + hv_set_register(HV_REGISTER_CRASH_CTL, + (HV_CRASH_CTL_CRASH_NOTIFY | HV_CRASH_CTL_CRASH_NOTIFY_MSG)); } static struct kmsg_dumper hv_kmsg_dumper = { diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h index 10c97a9e4027..6a8072f5845d 100644 --- a/include/asm-generic/mshyperv.h +++ b/include/asm-generic/mshyperv.h @@ -170,7 +170,6 @@ static inline int cpumask_to_vpset(struct hv_vpset *vpset, } void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die); -void hyperv_report_panic_msg(phys_addr_t pa, size_t size); bool hv_is_hyperv_initialized(void); bool hv_is_hibernation_supported(void); void hyperv_cleanup(void); From patchwork Thu Nov 4 12:54:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550894 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=hkypQh4R; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNsb17xlz9sP7 for ; Thu, 4 Nov 2021 23:55:30 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micH0-0004OX-9i; Thu, 04 Nov 2021 12:55:18 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micGz-0004OC-Dt for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:17 +0000 Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 435B63F1F6 for ; Thu, 4 Nov 2021 12:55:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030517; bh=cIK2vx/dxrocErvwzJBq/ydgqQ0dRi3TgHKgR4/E18k=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hkypQh4RBB/KzPG+o/o1uNbGXHZSsq4JASmDLXIdRbTixQXDdHZJs78Ws4+wtJQFu qHoFFiFUaCN4UULsLRTL2hrYf5fGZzu3jMroewrCYuQfxzKi0Wsw45lwTFS84/ce2m p6scnSbvWRyULsQUZowqKndqgeJh5LNRUSOYoUDUg4m9IIu1yt91WTFVe3W7UI2uHC sL9QE80+n+cY/gqVRu0n7HhHLt5vVzPoZDIzIYoorU2akPmD1RlLYpIKJiOBMGLzno kz6CsUH6+7npnsOfnjcaa7/ze6j9jpgR/vsAoOJnlT8IOY0Yf2cN5oOsCFiznNsGs9 xP5vSlJHrEJ2w== Received: by mail-pg1-f200.google.com with SMTP id r25-20020a63a019000000b002a20656994dso3675541pge.3 for ; Thu, 04 Nov 2021 05:55:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cIK2vx/dxrocErvwzJBq/ydgqQ0dRi3TgHKgR4/E18k=; b=C/WZhZP4/8FwyA6I1boLRZntltedZl3aoDLXeirpsUW4XtZQWtdiXexiw/FyMX7fxq LwGixEmwPbSxmzqE7zkZBk/i3TTH04wTN6B56gGpxNK8MW55YuP9b09+K4sQQsNlb7gU CBSp6ICpMTYDXC2crAQyECTuC50QXSaKgDUKsmJs61GOSwC2E+7G7XVfJFqbyGSGQOkv k8FjefyhSWB28c9LRw0VDdUIXC/R0VsL7awKq1qyQ3RSblU4hbAv8NcSqZxDrZqxiaGC f23NpzltDIMygYe6edRXFHYlZdBK7UXGf19HRYi5buqfmndz05f1jtvkv3t4BG40RhfO y/rA== X-Gm-Message-State: AOAM530D99wcletpmVDV6A4a5F8DFUGsJEtoZRuz2RKQ7/8pMRK1dMYi fELh3VLfiSASOajc5dY6NVo+/7CLtDvXK+pvxUbNkvMWep1Fknfnrn6A42qams75peCsS6HiP/q bToJnGVJE8qSy31edPONErDolbz9EuyXacCDthu8iww== X-Received: by 2002:a63:2702:: with SMTP id n2mr4153287pgn.319.1636030515194; Thu, 04 Nov 2021 05:55:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwNN0n2OXrf8FTMQyq4QiQia37/U4e/Fg4U8MRtuBgbIukdX6o89dXawTJfTOLV/XZfPr4wfA== X-Received: by 2002:a63:2702:: with SMTP id n2mr4153265pgn.319.1636030514943; Thu, 04 Nov 2021 05:55:14 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:14 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 05/41] Drivers: hv: vmbus: Handle auto EOI quirk inline Date: Thu, 4 Nov 2021 06:54:13 -0600 Message-Id: <20211104125449.16540-6-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 On x86/x64, Hyper-V provides a flag to indicate auto EOI functionality, but it doesn't on ARM64. Handle this quirk inline instead of calling into code under arch/x86 (and coming, under arch/arm64). No functional change. Signed-off-by: Michael Kelley Reviewed-by: Boqun Feng Link: https://lore.kernel.org/r/1614721102-2241-6-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (cherry picked from commit 946f4b8680b8ad177f6489e023a1d95e82d502e2) Signed-off-by: Marcelo Henrique Cerri --- arch/x86/include/asm/mshyperv.h | 3 --- drivers/hv/hv.c | 12 +++++++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h index 21fa98b840f5..42f5f939c9dc 100644 --- a/arch/x86/include/asm/mshyperv.h +++ b/arch/x86/include/asm/mshyperv.h @@ -27,9 +27,6 @@ static inline u64 hv_get_register(unsigned int reg) return value; } -#define hv_recommend_using_aeoi() \ - (!(ms_hyperv.hints & HV_DEPRECATING_AEOI_RECOMMENDED)) - #define hv_set_clocksource_vdso(val) \ ((val).vdso_clock_mode = VDSO_CLOCKMODE_HVCLOCK) #define hv_enable_vdso_clocksource() \ diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c index 0c1fa69381f7..afe7a62b447f 100644 --- a/drivers/hv/hv.c +++ b/drivers/hv/hv.c @@ -219,7 +219,17 @@ void hv_synic_enable_regs(unsigned int cpu) shared_sint.vector = hv_get_vector(); shared_sint.masked = false; - shared_sint.auto_eoi = hv_recommend_using_aeoi(); + + /* + * On architectures where Hyper-V doesn't support AEOI (e.g., ARM64), + * it doesn't provide a recommendation flag and AEOI must be disabled. + */ +#ifdef HV_DEPRECATING_AEOI_RECOMMENDED + shared_sint.auto_eoi = + !(ms_hyperv.hints & HV_DEPRECATING_AEOI_RECOMMENDED); +#else + shared_sint.auto_eoi = 0; +#endif hv_set_register(HV_REGISTER_SINT0 + VMBUS_MESSAGE_SINT, shared_sint.as_uint64); From patchwork Thu Nov 4 12:54:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550895 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=bWzUoBnT; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNsb6QfBz9t1Q for ; Thu, 4 Nov 2021 23:55:31 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micH4-0004Sl-21; Thu, 04 Nov 2021 12:55:22 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micH0-0004P2-OS for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:18 +0000 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 6E4E83F1F6 for ; Thu, 4 Nov 2021 12:55:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030518; bh=8jMbqHQPY/YWSPLCZOkzbdotUKg1SzemaQ9QH4FrxgU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bWzUoBnTAN33BxIpT0emkMkMmbqU86Seu1uLuZRxyB9TX07kFwGmXwmj0L0tyNwLM QU14kcj1Z+8N8OoVEfqo8B062d37UhXJLBzLsJTVtkXUU07almG8rCDsb0sTpK31uX ieEP1xfvVmbrXMUf5QpelRojULv9cNTFY+WAvDE3OHkCROug6gay40Trxq5kBuRMt4 H9llhQWn3hoGderImZdBM++wCb0X20fVfJzHWSJ7tsMXq8pvB0em2bqhAmWGiIIyy9 xampRJi36IlJNjRlGYjBx/gJynFoE/wR4F+NMLevrGizPE7mF6GnmIm8BDpHzBusbS lx2pZqRGw7LwQ== Received: by mail-pl1-f198.google.com with SMTP id e10-20020a17090301ca00b00141fbe2569dso3139658plh.14 for ; Thu, 04 Nov 2021 05:55:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8jMbqHQPY/YWSPLCZOkzbdotUKg1SzemaQ9QH4FrxgU=; b=zahcufH5XL4v56adYRVWGIrH/lmP6LB7mRb2NLylaBdgXqy67tUNcaP7y2H4mLW+hp YYYtuIfZV8sYijsyljE9MS96BVoA+x0fS1qE/Ej8DqBBDNfpz6HEolTstTEITWwOFgm4 pWGolj/Q/wBteXDVFeBPQHL8NzC9opKZgTEQZOuHJKsWLPTjAdrzp+MZr1xHMIR7f2js 2zy22hS13QOdCheP+0Y3dZ80rljs28VKABkLdEAdfmU29KWHcu/+s0BGFIv/EvIce7BQ OprBKVtOvPaU+YACSHwGnRcrYwn45AmZEOHNCZCbjY3e10+Jj2vyavaQ7Y9JizVYR0WG B+DQ== X-Gm-Message-State: AOAM5326A9O7fQi/m9rZVthOGniAcJsIOLXpOFO8Wv46UJSNgbG++wB0 XuxvEGY6iotMenmpJ690zWawv9sN2PDUkwWsbZYVpNjhpPlL1QNHoohL1L7F0HYP0ELeEPJPVqR PTRZPZH4UFwNzBpPBV1imdgCq9IjlDKtJCzEJ81bl/w== X-Received: by 2002:a63:6808:: with SMTP id d8mr37859155pgc.72.1636030516360; Thu, 04 Nov 2021 05:55:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzFa0EIen/HZt/pB0LJNnSV6OUvs785moHu5wsD2tUUcmsfzVPUp5GiQhOYBTmIJTJ64JbYbQ== X-Received: by 2002:a63:6808:: with SMTP id d8mr37859135pgc.72.1636030516017; Thu, 04 Nov 2021 05:55:16 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:15 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 06/41] Drivers: hv: vmbus: Move handling of VMbus interrupts Date: Thu, 4 Nov 2021 06:54:14 -0600 Message-Id: <20211104125449.16540-7-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 VMbus interrupts are most naturally modelled as per-cpu IRQs. But because x86/x64 doesn't have per-cpu IRQs, the core VMbus interrupt handling machinery is done in code under arch/x86 and Linux IRQs are not used. Adding support for ARM64 means adding equivalent code using per-cpu IRQs under arch/arm64. A better model is to treat per-cpu IRQs as the normal path (which it is for modern architectures), and the x86/x64 path as the exception. Do this by incorporating standard Linux per-cpu IRQ allocation into the main VMbus driver, and bypassing it in the x86/x64 exception case. For x86/x64, special case code is retained under arch/x86, but no VMbus interrupt handling code is needed under arch/arm64. No functional change. Signed-off-by: Michael Kelley Reviewed-by: Boqun Feng Link: https://lore.kernel.org/r/1614721102-2241-7-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (cherry picked from commit d608715d4771cf2d63de07a5d7b026b6f52a70a5) Signed-off-by: Marcelo Henrique Cerri --- arch/x86/include/asm/mshyperv.h | 1 - arch/x86/kernel/cpu/mshyperv.c | 13 +++---- drivers/hv/hv.c | 8 ++++- drivers/hv/vmbus_drv.c | 63 +++++++++++++++++++++++++++++---- include/asm-generic/mshyperv.h | 7 ++-- 5 files changed, 70 insertions(+), 22 deletions(-) diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h index 42f5f939c9dc..38ec8febf60a 100644 --- a/arch/x86/include/asm/mshyperv.h +++ b/arch/x86/include/asm/mshyperv.h @@ -32,7 +32,6 @@ static inline u64 hv_get_register(unsigned int reg) #define hv_enable_vdso_clocksource() \ vclocks_set_used(VDSO_CLOCKMODE_HVCLOCK); #define hv_get_raw_timer() rdtsc_ordered() -#define hv_get_vector() HYPERVISOR_CALLBACK_VECTOR /* * Reference to pv_ops must be inline so objtool diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c index 43b54bef5448..1d2c026ce408 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -55,23 +55,18 @@ DEFINE_IDTENTRY_SYSVEC(sysvec_hyperv_callback) set_irq_regs(old_regs); } -int hv_setup_vmbus_irq(int irq, void (*handler)(void)) +void hv_setup_vmbus_handler(void (*handler)(void)) { - /* - * The 'irq' argument is ignored on x86/x64 because a hard-coded - * interrupt vector is used for Hyper-V interrupts. - */ vmbus_handler = handler; - return 0; } +EXPORT_SYMBOL_GPL(hv_setup_vmbus_handler); -void hv_remove_vmbus_irq(void) +void hv_remove_vmbus_handler(void) { /* We have no way to deallocate the interrupt gate */ vmbus_handler = NULL; } -EXPORT_SYMBOL_GPL(hv_setup_vmbus_irq); -EXPORT_SYMBOL_GPL(hv_remove_vmbus_irq); +EXPORT_SYMBOL_GPL(hv_remove_vmbus_handler); /* * Routines to do per-architecture handling of stimer0 diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c index afe7a62b447f..917b29e873c5 100644 --- a/drivers/hv/hv.c +++ b/drivers/hv/hv.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include "hyperv_vmbus.h" @@ -214,10 +215,12 @@ void hv_synic_enable_regs(unsigned int cpu) hv_set_register(HV_REGISTER_SIEFP, siefp.as_uint64); /* Setup the shared SINT. */ + if (vmbus_irq != -1) + enable_percpu_irq(vmbus_irq, 0); shared_sint.as_uint64 = hv_get_register(HV_REGISTER_SINT0 + VMBUS_MESSAGE_SINT); - shared_sint.vector = hv_get_vector(); + shared_sint.vector = vmbus_interrupt; shared_sint.masked = false; /* @@ -285,6 +288,9 @@ void hv_synic_disable_regs(unsigned int cpu) sctrl.as_uint64 = hv_get_register(HV_REGISTER_SCONTROL); sctrl.enable = 0; hv_set_register(HV_REGISTER_SCONTROL, sctrl.as_uint64); + + if (vmbus_irq != -1) + disable_percpu_irq(vmbus_irq); } diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c index 7f61d7b779f3..4e85ec32586c 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c @@ -48,8 +48,10 @@ static int hyperv_cpuhp_online; static void *hv_panic_page; +static long __percpu *vmbus_evt; + /* Values parsed from ACPI DSDT */ -static int vmbus_irq; +int vmbus_irq; int vmbus_interrupt; /* @@ -1354,7 +1356,13 @@ static void vmbus_isr(void) tasklet_schedule(&hv_cpu->msg_dpc); } - add_interrupt_randomness(hv_get_vector(), 0); + add_interrupt_randomness(vmbus_interrupt, 0); +} + +static irqreturn_t vmbus_percpu_isr(int irq, void *dev_id) +{ + vmbus_isr(); + return IRQ_HANDLED; } /* @@ -1469,9 +1477,28 @@ static int vmbus_bus_init(void) if (ret) return ret; - ret = hv_setup_vmbus_irq(vmbus_irq, vmbus_isr); - if (ret) - goto err_setup; + /* + * VMbus interrupts are best modeled as per-cpu interrupts. If + * on an architecture with support for per-cpu IRQs (e.g. ARM64), + * allocate a per-cpu IRQ using standard Linux kernel functionality. + * If not on such an architecture (e.g., x86/x64), then rely on + * code in the arch-specific portion of the code tree to connect + * the VMbus interrupt handler. + */ + + if (vmbus_irq == -1) { + hv_setup_vmbus_handler(vmbus_isr); + } else { + vmbus_evt = alloc_percpu(long); + ret = request_percpu_irq(vmbus_irq, vmbus_percpu_isr, + "Hyper-V VMbus", vmbus_evt); + if (ret) { + pr_err("Can't request Hyper-V VMbus IRQ %d, Err %d", + vmbus_irq, ret); + free_percpu(vmbus_evt); + goto err_setup; + } + } ret = hv_synic_alloc(); if (ret) @@ -1532,7 +1559,12 @@ static int vmbus_bus_init(void) err_cpuhp: hv_synic_free(); err_alloc: - hv_remove_vmbus_irq(); + if (vmbus_irq == -1) { + hv_remove_vmbus_handler(); + } else { + free_percpu_irq(vmbus_irq, vmbus_evt); + free_percpu(vmbus_evt); + } err_setup: bus_unregister(&hv_bus); unregister_sysctl_table(hv_ctl_table_hdr); @@ -2647,6 +2679,18 @@ static int __init hv_acpi_init(void) ret = -ETIMEDOUT; goto cleanup; } + + /* + * If we're on an architecture with a hardcoded hypervisor + * vector (i.e. x86/x64), override the VMbus interrupt found + * in the ACPI tables. Ensure vmbus_irq is not set since the + * normal Linux IRQ mechanism is not used in this case. + */ +#ifdef HYPERVISOR_CALLBACK_VECTOR + vmbus_interrupt = HYPERVISOR_CALLBACK_VECTOR; + vmbus_irq = -1; +#endif + hv_debug_init(); ret = vmbus_bus_init(); @@ -2677,7 +2721,12 @@ static void __exit vmbus_exit(void) vmbus_connection.conn_state = DISCONNECTED; hv_stimer_global_cleanup(); vmbus_disconnect(); - hv_remove_vmbus_irq(); + if (vmbus_irq == -1) { + hv_remove_vmbus_handler(); + } else { + free_percpu_irq(vmbus_irq, vmbus_evt); + free_percpu(vmbus_evt); + } for_each_online_cpu(cpu) { struct hv_per_cpu_context *hv_cpu = per_cpu_ptr(hv_context.cpu_context, cpu); diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h index 6a8072f5845d..9f4089bfcd80 100644 --- a/include/asm-generic/mshyperv.h +++ b/include/asm-generic/mshyperv.h @@ -89,10 +89,8 @@ static inline void vmbus_signal_eom(struct hv_message *msg, u32 old_msg_type) } } -int hv_setup_vmbus_irq(int irq, void (*handler)(void)); -void hv_remove_vmbus_irq(void); -void hv_enable_vmbus_irq(void); -void hv_disable_vmbus_irq(void); +void hv_setup_vmbus_handler(void (*handler)(void)); +void hv_remove_vmbus_handler(void); void hv_setup_kexec_handler(void (*handler)(void)); void hv_remove_kexec_handler(void); @@ -100,6 +98,7 @@ void hv_setup_crash_handler(void (*handler)(struct pt_regs *regs)); void hv_remove_crash_handler(void); extern int vmbus_interrupt; +extern int vmbus_irq; #if IS_ENABLED(CONFIG_HYPERV) /* From patchwork Thu Nov 4 12:54:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550899 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=vI4WfNQP; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNsn71VZz9s0r for ; Thu, 4 Nov 2021 23:55:41 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micHC-0004cV-6f; Thu, 04 Nov 2021 12:55:30 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micH3-0004Rb-P0 for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:21 +0000 Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 537523F1C0 for ; Thu, 4 Nov 2021 12:55:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030520; bh=MMfJJ32K9Deg6iZE6EJYTUUq9IPO9PrrzJWMdtZxTyc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=vI4WfNQPLQ5MBQYDv+sy7pg4z3W2Q01Il6+TuX6dDfJwp1C/+LoUACZfNbw9/Va7Z 8bDQXiI28X9kojfmWWFYB2yMogpn1s6lT4wYd4MSi4MXsNoMwXaWTeCv5hHhD7G0HZ jNpKch1GTdqag8qOrqD/O3bnJ56kOV875a5r2TS2mgm4TaxyJwoGWlCXSnBKwT/YCF puMbcxjYmI+x4HleMrspsJpdpbd/pZcOUe+kZv3xlttsfxyDnt5+ZCtxiZdbLNwP/9 Dp3CRfYGZRVumHdNtZYK0O5TB+Q3Dxq42ZNBkmA8rzq6Zc3SCx6P9srTtuMu6Ep6s6 OyorexlRPTWSQ== Received: by mail-pg1-f199.google.com with SMTP id u5-20020a63d3450000b029023a5f6e6f9bso3619334pgi.21 for ; Thu, 04 Nov 2021 05:55:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MMfJJ32K9Deg6iZE6EJYTUUq9IPO9PrrzJWMdtZxTyc=; b=kol3HgVlbWH1kjWoT9jX+cpRhJpLxJaF0787xcmggf5hjlxik5uNALjFxgBBj8nLF/ AgZbUA1K/WyYvIRmoylq4bIOwDiwOSZ14Ve5jbJYHHdawrUUK5GDLyyImMN8pE6UjOtD zr6DPA38b8X2AnW8qwOPvSXXruYOhZbTBjoUTcFcKRanIC4jj9NwLdWrgTpTCV3wgY6Q NGzd1475jUAvvET3RGg49RojdwM3L+CBxH3zVID6ONfChdFbhYdmJy16WootMHGwZ2w+ a5OxjWIdX1g+kJI8V8tdDYM5GE9MQjsb/IevdV2X93TSlYVxGjaiZgxDkW5ILsPTzzAK zFAA== X-Gm-Message-State: AOAM5303WFtFnMtsse698v/fw1fOqLRgAg0DSqgPExBPEpwrSkVaOGIl cY9S8CE3mgRBVAh96YHkXeIrkGXCBtD1XnHwEZZ9J7YQCVXOfeCbapu6FVwf+oDXJ9HBoQGP86R vo+FWWpZypYBCXcspQZOGHomw7bl6c3RjTzupQvp5+w== X-Received: by 2002:a63:8948:: with SMTP id v69mr27399344pgd.463.1636030517013; Thu, 04 Nov 2021 05:55:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw3rlZxJ+QtctGiqMrHEN/f+7h9T19x037g+EfE/PEEbCMUim8muhtHH1PA6KJBxPDvE51/1Q== X-Received: by 2002:a63:8948:: with SMTP id v69mr27399331pgd.463.1636030516806; Thu, 04 Nov 2021 05:55:16 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:16 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 07/41] clocksource/drivers/hyper-v: Handle vDSO differences inline Date: Thu, 4 Nov 2021 06:54:15 -0600 Message-Id: <20211104125449.16540-8-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 While the driver for the Hyper-V Reference TSC and STIMERs is architecture neutral, vDSO is implemented for x86/x64, but not for ARM64. Current code calls into utility functions under arch/x86 (and coming, under arch/arm64) to handle the difference. Change this approach to handle the difference inline based on whether VDSO_CLOCK_MODE_HVCLOCK is present. The new approach removes code under arch/* since the difference is tied more to the specifics of the Linux implementation than to the architecture. No functional change. Signed-off-by: Michael Kelley Reviewed-by: Boqun Feng Acked-by: Daniel Lezcano Link: https://lore.kernel.org/r/1614721102-2241-8-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (cherry picked from commit e4ab4658f1cff14c82202132f7af2cb5c2741469) Signed-off-by: Marcelo Henrique Cerri --- arch/x86/include/asm/mshyperv.h | 4 ---- drivers/clocksource/hyperv_timer.c | 10 ++++++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h index 38ec8febf60a..89cdfb903e48 100644 --- a/arch/x86/include/asm/mshyperv.h +++ b/arch/x86/include/asm/mshyperv.h @@ -27,10 +27,6 @@ static inline u64 hv_get_register(unsigned int reg) return value; } -#define hv_set_clocksource_vdso(val) \ - ((val).vdso_clock_mode = VDSO_CLOCKMODE_HVCLOCK) -#define hv_enable_vdso_clocksource() \ - vclocks_set_used(VDSO_CLOCKMODE_HVCLOCK); #define hv_get_raw_timer() rdtsc_ordered() /* diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c index 942530817aa5..a143170eb2ff 100644 --- a/drivers/clocksource/hyperv_timer.c +++ b/drivers/clocksource/hyperv_timer.c @@ -370,11 +370,13 @@ static void resume_hv_clock_tsc(struct clocksource *arg) hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr); } +#ifdef VDSO_CLOCKMODE_HVCLOCK static int hv_cs_enable(struct clocksource *cs) { - hv_enable_vdso_clocksource(); + vclocks_set_used(VDSO_CLOCKMODE_HVCLOCK); return 0; } +#endif static struct clocksource hyperv_cs_tsc = { .name = "hyperv_clocksource_tsc_page", @@ -384,7 +386,12 @@ static struct clocksource hyperv_cs_tsc = { .flags = CLOCK_SOURCE_IS_CONTINUOUS, .suspend= suspend_hv_clock_tsc, .resume = resume_hv_clock_tsc, +#ifdef VDSO_CLOCKMODE_HVCLOCK .enable = hv_cs_enable, + .vdso_clock_mode = VDSO_CLOCKMODE_HVCLOCK, +#else + .vdso_clock_mode = VDSO_CLOCKMODE_NONE, +#endif }; static u64 notrace read_hv_clock_msr(void) @@ -439,7 +446,6 @@ static bool __init hv_init_tsc_clocksource(void) tsc_msr = tsc_msr | 0x1 | (u64)phys_addr; hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr); - hv_set_clocksource_vdso(hyperv_cs_tsc); clocksource_register_hz(&hyperv_cs_tsc, NSEC_PER_SEC/100); hv_sched_clock_offset = hv_read_reference_counter(); From patchwork Thu Nov 4 12:54:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550898 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=b7WyqbOG; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNsk2YZmz9s0r for ; Thu, 4 Nov 2021 23:55:38 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micH7-0004Wp-T5; Thu, 04 Nov 2021 12:55:25 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micH1-0004Qp-RN for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:19 +0000 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id A818D3F1F5 for ; Thu, 4 Nov 2021 12:55:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030519; bh=btQemPY2dNrA3Km51dLA5n0TitGPDMoBnf/I1BAxh4Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=b7WyqbOGfb1FNDej+42ehYojQwHqp5QuXSWzy+M2sZrq0RGQ7NrOBUOoY0oFF96s0 4OCRWlBMTfuAN96j3GfVyjq7LlUpb6lzMnObmvDwzWzyVhkUnTXctK+NeOcgqjl9FB u/o7CMrNCQGKmN3S+RL5WeouxNRB9ClMiDWvOY1naF+Uppii4vFRbwStr3IYxtN502 erFdX0sR0yEEQeju8vAQ3re3JvS3yA2NpTJP7e1U1+sFa4hxJnqhyUAusU0gS9kRFv MHKCVq4ArbWIpwLuOkhmAwzgEqWw0kS55dMKrkxPNg+hD2kGuOqHCtQ/3MRWP4zRTE mggTrFH6+1abA== Received: by mail-pl1-f198.google.com with SMTP id u22-20020a170902a61600b00141ab5dd25dso3176309plq.5 for ; Thu, 04 Nov 2021 05:55:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=btQemPY2dNrA3Km51dLA5n0TitGPDMoBnf/I1BAxh4Y=; b=2RbXKa4KeQTy+KYoVNlRr/o3PPIq52lhTRiNlPF0PjUGgTwZHeA48dx2LtOs1gBj2e rUZHsLHFsFzTjnLNhji50gJKNX3JSw4O88eN4A96BI7OfuqlrM6zlxbG8RESukfO79T0 Xz6oYxwFrggF7qehy/nsmBkcIDUxrpulFVSqngdbONwSB3WaFi8VHmT8JEBxLCE+q/Zu G1XHham6dLcVe4mAT0YWsnAE9lLo1ADyFpP9s7ZdeBCLk0K0ZGqd5IokAd+ks8kAvos2 74IC/3B3qS7MmjCfOsf4JE3Hzh3WbSUzhRvjod6ROHK2xHDgsvqSgrGQbtIXngdC1U2M obcw== X-Gm-Message-State: AOAM531yIDKTEG2e852Ywk9NRUh8WhJxoxPDOuGJvhrWDVnPNdDK8wDA HUCOJ8Un0TDgknY0S6CF36NWjaHKWZMRMm5cOaBvaUh8QrxrKYQ21fho4xic/oYMqCA6GMe69g1 +36zNTf8W4oUBXfGcrlu75xl7t8Zlxn+Wyu8UGuB8vQ== X-Received: by 2002:a63:88c8:: with SMTP id l191mr27149705pgd.369.1636030517808; Thu, 04 Nov 2021 05:55:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwhfqlF1iKnjeKTcTv3OvR14BkbLda6xCYz8ugyVpce6fAgf+MW2UXY4oOElZSXZxfoF3uFzA== X-Received: by 2002:a63:88c8:: with SMTP id l191mr27149690pgd.369.1636030517588; Thu, 04 Nov 2021 05:55:17 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:17 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 08/41] clocksource/drivers/hyper-v: Handle sched_clock differences inline Date: Thu, 4 Nov 2021 06:54:16 -0600 Message-Id: <20211104125449.16540-9-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 While the Hyper-V Reference TSC code is architecture neutral, the pv_ops.time.sched_clock() function is implemented for x86/x64, but not for ARM64. Current code calls a utility function under arch/x86 (and coming, under arch/arm64) to handle the difference. Change this approach to handle the difference inline based on whether GENERIC_SCHED_CLOCK is present. The new approach removes code under arch/* since the difference is tied more to the specifics of the Linux implementation than to the architecture. No functional change. Signed-off-by: Michael Kelley Reviewed-by: Boqun Feng Acked-by: Daniel Lezcano Link: https://lore.kernel.org/r/1614721102-2241-9-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (cherry picked from commit eb3e1d370b4c57be1acbb9de51a7deaa036eff4b) Signed-off-by: Marcelo Henrique Cerri --- arch/x86/include/asm/mshyperv.h | 11 ----------- drivers/clocksource/hyperv_timer.c | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h index 89cdfb903e48..6165a769c7bc 100644 --- a/arch/x86/include/asm/mshyperv.h +++ b/arch/x86/include/asm/mshyperv.h @@ -29,17 +29,6 @@ static inline u64 hv_get_register(unsigned int reg) #define hv_get_raw_timer() rdtsc_ordered() -/* - * Reference to pv_ops must be inline so objtool - * detection of noinstr violations can work correctly. - */ -static __always_inline void hv_setup_sched_clock(void *sched_clock) -{ -#ifdef CONFIG_PARAVIRT - pv_ops.time.sched_clock = sched_clock; -#endif -} - void hyperv_vector_handler(struct pt_regs *regs); static inline void hv_enable_stimer0_percpu_irq(int irq) {} diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c index a143170eb2ff..4c9e6a87c438 100644 --- a/drivers/clocksource/hyperv_timer.c +++ b/drivers/clocksource/hyperv_timer.c @@ -423,6 +423,30 @@ static struct clocksource hyperv_cs_msr = { .flags = CLOCK_SOURCE_IS_CONTINUOUS, }; +/* + * Reference to pv_ops must be inline so objtool + * detection of noinstr violations can work correctly. + */ +#ifdef CONFIG_GENERIC_SCHED_CLOCK +static __always_inline void hv_setup_sched_clock(void *sched_clock) +{ + /* + * We're on an architecture with generic sched clock (not x86/x64). + * The Hyper-V sched clock read function returns nanoseconds, not + * the normal 100ns units of the Hyper-V synthetic clock. + */ + sched_clock_register(sched_clock, 64, NSEC_PER_SEC); +} +#elif defined CONFIG_PARAVIRT +static __always_inline void hv_setup_sched_clock(void *sched_clock) +{ + /* We're on x86/x64 *and* using PV ops */ + pv_ops.time.sched_clock = sched_clock; +} +#else /* !CONFIG_GENERIC_SCHED_CLOCK && !CONFIG_PARAVIRT */ +static __always_inline void hv_setup_sched_clock(void *sched_clock) {} +#endif /* CONFIG_GENERIC_SCHED_CLOCK */ + static bool __init hv_init_tsc_clocksource(void) { u64 tsc_msr; From patchwork Thu Nov 4 12:54:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550900 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=sXRV0L4u; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNst0jvBz9s0r for ; Thu, 4 Nov 2021 23:55:46 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micHH-0004jw-0b; Thu, 04 Nov 2021 12:55:35 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micH2-0004Ru-UN for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:20 +0000 Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 9966E3F1F5 for ; Thu, 4 Nov 2021 12:55:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030520; bh=KeNvtjWiyJ18eYKA/bdmfxBkS2rllMpYBKHWWVwiW0s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=sXRV0L4uPQ0CAIhg2auVJ0ObypxOt56mjdqpQgdr9/c52gfpWHOg8/Zs1tq69ouWY lGYmvd7Lr5tSAknbLUb7KWKDUbURLu6KnRCbAqEgU8g1ZVtWoKhHujrP/yr6uxitPi T2q4WTsp1ugYrTcLLkpeEZFF+ipvWzYWP8FU9Pgo+kQtQUxhkeD2n0NxU+vtug5ne7 mrjvNzBrwcrJbVTaaVhqZqIVKNspZH5GDE0kamIfJey/hyuwdxPvIpfgfVn4tqZxWs U1os1vKsiCaazd+/vY3u2gHr9U9/gti6G5kPIwsfKqgXvewhgbdA9FzUkoOfMLvWnl OSlz2LA8M1M3A== Received: by mail-pf1-f197.google.com with SMTP id f18-20020aa79d92000000b0048118561271so3726040pfq.21 for ; Thu, 04 Nov 2021 05:55:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KeNvtjWiyJ18eYKA/bdmfxBkS2rllMpYBKHWWVwiW0s=; b=cv9uA+WqadTa43WhF2Bs7QproNriABDrRqi7gCUeOziOt2mRHXF6UnvyRIdNR3vzfo Tfcd/wmvz7mcZAP2b8F1mH1Wpb8CQ00f9cKybSEO/IV35JotM3LkIiF8x0D8PlWULzpD EgG7yp3RMCKgXxvzy4xUGAqSlw0GF+D3l0Dtk6jlO4VudONyaNIVZh11ARP22Sxp4XbX DCEV4P91OShsMRC4T9z/v094vDxLWm19PO+rPVxnSSYmplnxFjMkbvY6ON5QiT+RfRS5 AAVt69IuAFC61sLCRryPNdLbaQf1W1dnfMZrQwA21B5GDzcTnfKi2ExXI9y1YDVyzS/L kiOg== X-Gm-Message-State: AOAM533+uJOXZOXJ5LY2uwJyX4KQNTqn+wrxDHQpK6xCkmRc7HAHdQAF iUhrM9ZSjvtci9N87ZM6XDRKdTFXyVdGwlHHvpZ1NnIr30JKZk9TRBiXdO+2fraQIn4vSJ6JiGV X9sQ3jveuK6+tsy0KZ6a210rmhgXSxAW5mk3Zw2JpJA== X-Received: by 2002:a63:85c1:: with SMTP id u184mr28248050pgd.55.1636030518716; Thu, 04 Nov 2021 05:55:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxEfgrUV9BM6Sn0yRMkKaJEID4ZNpxvJ/8zHP0YyKlbJTOUsbzMrtEAA6fbc07N4ThoeRx47Q== X-Received: by 2002:a63:85c1:: with SMTP id u184mr28248030pgd.55.1636030518342; Thu, 04 Nov 2021 05:55:18 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:17 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 09/41] asm-generic/hyperv: change HV_CPU_POWER_MANAGEMENT to HV_CPU_MANAGEMENT Date: Thu, 4 Nov 2021 06:54:17 -0600 Message-Id: <20211104125449.16540-10-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Wei Liu BugLink: https://bugs.launchpad.net/bugs/1949770 This makes the name match Hyper-V TLFS. Signed-off-by: Wei Liu Reviewed-by: Vitaly Kuznetsov Reviewed-by: Pavel Tatashin Reviewed-by: Michael Kelley Link: https://lore.kernel.org/r/20210203150435.27941-2-wei.liu@kernel.org (back ported from commit 8f1d14cb835672cd27f6533f22f4c73e60a30727) [marcelo.cerri@canonical.com: trivial context fix] Signed-off-by: Marcelo Henrique Cerri --- include/asm-generic/hyperv-tlfs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/asm-generic/hyperv-tlfs.h b/include/asm-generic/hyperv-tlfs.h index d06f7b1cbd85..c2f5e81464cd 100644 --- a/include/asm-generic/hyperv-tlfs.h +++ b/include/asm-generic/hyperv-tlfs.h @@ -88,7 +88,7 @@ #define HV_CONNECT_PORT BIT(7) #define HV_ACCESS_STATS BIT(8) #define HV_DEBUGGING BIT(11) -#define HV_CPU_POWER_MANAGEMENT BIT(12) +#define HV_CPU_MANAGEMENT BIT(12) /* From patchwork Thu Nov 4 12:54:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550901 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=vrz94Cyq; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNsz6yPPz9s0r for ; Thu, 4 Nov 2021 23:55:51 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micHL-0004pn-MV; Thu, 04 Nov 2021 12:55:39 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micH3-0004SY-JO for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:21 +0000 Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 69B353F1F5 for ; Thu, 4 Nov 2021 12:55:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030521; bh=Xvqaip2mUge5We3VYtEPVu3PoMSnT/tk7R9vh+hNesU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=vrz94CyqCetXYEPR5yv27eMAQw7b0LA6nykx99NIvdzVUCVhYAbklBt7UhD/YKJ3a qZe5z6rC/vUjguAs6t5zQOlW/UPpUZVW/73r/XSdtaNBWUl0WD2GLYUSSXcqf/AlNG 3QMsWJ82c+yNZ1pC3Xb9KJpiMxxl91I1KjJwv/l5veCmE43XzsuQOrZTORofLP1rY4 Bb3HMLx1Tbq5wqcKxPmBZrBUQpRrz2/awfef9qdHzDsm/EAFpjBd+rDAhFtp+N7NMw ui/wOsW+e2zouYyIofO3Ckb1PJnIIbj0oKkS8mrLwG17guJnrZTOer+jUvuZSa5GzC tANBq3/09PInQ== Received: by mail-pf1-f198.google.com with SMTP id f18-20020aa79d92000000b0048118561271so3726067pfq.21 for ; Thu, 04 Nov 2021 05:55:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Xvqaip2mUge5We3VYtEPVu3PoMSnT/tk7R9vh+hNesU=; b=Yc2bMFjA3fopJ+bh/+BQvXOdgCoRGiMQweahTTVqOwgQ/hV0wnqc7+Mm7DzrtnNqQc 3YUAdPfk0iwIOFfKpVGB9MjWnLzy2h3jvSQ01BqRteufiIXR/SO7XoifQT61dpw97Yak +qjp3ClOYzsj9MfrtYteIDDL58145iqLi5cpct7Hwg65fYHcJFE87VrdvaCO4vq1vPjg 4GVM9krvKyyuVcGA7QWNMlt5zzlez5/u75UTOSmMjdaeaUmPND/1KdXd1ia8lb3Cr/kO wEA/DtzC4Gs3Y1ECDwISI/js6KWqUkELLojFrF3F3S542tSMySLGlAI/Bi202trbET6H SFLg== X-Gm-Message-State: AOAM531y+tHtpzr3fQA8LoV9GQDlGbLIQzk3Zl8Iv+Bg9ZZ3WpGeorzL eT2j3RZFTWMQAy5BAzdjN1ToZIis3k4VTlzPMCqZsQo4Y/dhZWyOos1YLVO4b/2NopfRjX+boEJ ym+c9Hl1Ou5V+TLgmlUTSkz1q3/MiVUKQLIK+HGfgNw== X-Received: by 2002:a63:258:: with SMTP id 85mr38834199pgc.411.1636030519442; Thu, 04 Nov 2021 05:55:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJykId0SvswGkv3AeY3y/Xzlkk6VaMmZ5wUu6g8JnrE7fG9K3i7116k05wstL5t9YnvP/rtFFQ== X-Received: by 2002:a63:258:: with SMTP id 85mr38834183pgc.411.1636030519213; Thu, 04 Nov 2021 05:55:19 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:18 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 10/41] x86/hyperv: detect if Linux is the root partition Date: Thu, 4 Nov 2021 06:54:18 -0600 Message-Id: <20211104125449.16540-11-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Wei Liu BugLink: https://bugs.launchpad.net/bugs/1949770 For now we can use the privilege flag to check. Stash the value to be used later. Put in a bunch of defines for future use when we want to have more fine-grained detection. Signed-off-by: Wei Liu Reviewed-by: Pavel Tatashin Reviewed-by: Michael Kelley Link: https://lore.kernel.org/r/20210203150435.27941-3-wei.liu@kernel.org (cherry picked from commit e997720202b363ba8000d769f114e3c2c5822227) Signed-off-by: Marcelo Henrique Cerri --- arch/x86/include/asm/hyperv-tlfs.h | 10 ++++++++++ arch/x86/include/asm/mshyperv.h | 2 ++ arch/x86/kernel/cpu/mshyperv.c | 20 ++++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/arch/x86/include/asm/hyperv-tlfs.h b/arch/x86/include/asm/hyperv-tlfs.h index c88c42f07301..3c544d095574 100644 --- a/arch/x86/include/asm/hyperv-tlfs.h +++ b/arch/x86/include/asm/hyperv-tlfs.h @@ -21,6 +21,7 @@ #define HYPERV_CPUID_FEATURES 0x40000003 #define HYPERV_CPUID_ENLIGHTMENT_INFO 0x40000004 #define HYPERV_CPUID_IMPLEMENT_LIMITS 0x40000005 +#define HYPERV_CPUID_CPU_MANAGEMENT_FEATURES 0x40000007 #define HYPERV_CPUID_NESTED_FEATURES 0x4000000A #define HYPERV_CPUID_VIRT_STACK_INTERFACE 0x40000081 @@ -110,6 +111,15 @@ /* Recommend using enlightened VMCS */ #define HV_X64_ENLIGHTENED_VMCS_RECOMMENDED BIT(14) +/* + * CPU management features identification. + * These are HYPERV_CPUID_CPU_MANAGEMENT_FEATURES.EAX bits. + */ +#define HV_X64_START_LOGICAL_PROCESSOR BIT(0) +#define HV_X64_CREATE_ROOT_VIRTUAL_PROCESSOR BIT(1) +#define HV_X64_PERFORMANCE_COUNTER_SYNC BIT(2) +#define HV_X64_RESERVED_IDENTITY_BIT BIT(31) + /* * Virtual processor will never share a physical core with another virtual * processor, except for virtual processors that are reported as sibling SMT diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h index 6165a769c7bc..2539e756c0e3 100644 --- a/arch/x86/include/asm/mshyperv.h +++ b/arch/x86/include/asm/mshyperv.h @@ -198,6 +198,8 @@ int hyperv_fill_flush_guest_mapping_list( struct hv_guest_mapping_flush_list *flush, u64 start_gfn, u64 end_gfn); +extern bool hv_root_partition; + #ifdef CONFIG_X86_64 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 1d2c026ce408..67ba735a3f42 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -32,6 +32,10 @@ #include #include +/* Is Linux running as the root partition? */ +bool hv_root_partition; +EXPORT_SYMBOL_GPL(hv_root_partition); + struct ms_hyperv_info ms_hyperv; EXPORT_SYMBOL_GPL(ms_hyperv); @@ -250,6 +254,22 @@ static void __init ms_hyperv_init_platform(void) pr_debug("Hyper-V: max %u virtual processors, %u logical processors\n", ms_hyperv.max_vp_index, ms_hyperv.max_lp_index); + /* + * Check CPU management privilege. + * + * To mirror what Windows does we should extract CPU management + * features and use the ReservedIdentityBit to detect if Linux is the + * root partition. But that requires negotiating CPU management + * interface (a process to be finalized). + * + * For now, use the privilege flag as the indicator for running as + * root. + */ + if (cpuid_ebx(HYPERV_CPUID_FEATURES) & HV_CPU_MANAGEMENT) { + hv_root_partition = true; + pr_info("Hyper-V: running as root partition\n"); + } + /* * Extract host information. */ From patchwork Thu Nov 4 12:54:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550904 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=ptfHVc+k; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNt64sdmz9s0r for ; Thu, 4 Nov 2021 23:55:58 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micHS-0004yG-Kk; Thu, 04 Nov 2021 12:55:46 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micH4-0004Sy-IR for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:22 +0000 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 010E63F1F6 for ; Thu, 4 Nov 2021 12:55:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030522; bh=F17SCjXda2bfvYDvPvBoKkCYGxiqWV4NcfQdG8KBo1Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ptfHVc+kOGSe4CAg9cPubBIePp7Ja62Y2izMI7MxQC3ha7cn2HXA25LUc6+c+Rybi yYiuq+gPODVpiU0aQxwncaVjn6LLLd6KpfLgFrzdUtiB23IK1ISNErgvLhqWqxXquL tR7tOm5ZfDBGo3OpUApRWPjX8fC167L/00z/429kXxSrNij5o0tGMY4+Z6CQfV1d5P NbFQsNuiP0nthoqYqnBq/39TRaZupjUjHl1cnMCo7L/mhPiugi/gDGXlGS/uNrjGA5 7x5YBMdRlfhIziHfwryHkQwOTmCcnN4dtD07MmVTauZgTBYjlTz0vvYCo+quaCQRVg UX7hRnpqZzEBg== Received: by mail-pl1-f198.google.com with SMTP id n9-20020a170902968900b0013f23b51142so3174030plp.8 for ; Thu, 04 Nov 2021 05:55:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=F17SCjXda2bfvYDvPvBoKkCYGxiqWV4NcfQdG8KBo1Y=; b=0cmru+oMTCI0kUlvg+V6tQ0BdXVkWVs0/20yW7jroegDcclJ0XyjpOU0+BiIubJdn8 iX5LsGdHrbEAguTV/+mr9Vb57qJ41hWr67Xqf1xHzrqgNmQSEk93ySIAD9w28zJ3LPsr EPgcFRYvgODgU8DJj32oVYpFz0f5cQHMRaigNJAdzYQ88yNQkzvSq8/FkxjZVNM4BawT HyjzO2IE9mXhdx4RphWnnB3h/0QxPODteKzq2VQGf4T7DLPjgbe2vJz34jnCusgw4qij tSDV89ns7KlKjaQtP9iP8r/NTGkTtiOD5fOLy8HbpzXt2huYxt4w43ALC1GQmuZgEvku 1UmA== X-Gm-Message-State: AOAM532I9/gc/uRLy6fPC96uvUuMyEyuAcalWTVh8RwsUyMpKK1W5SYP P5xDmEEO0+4yCAprcVcMqwEG64++W2FkonhqRkYyaKQjNPDZBh47RBUYGk0Rz3ugsHJtR1Xy0FP D2sMM8n5QdI3lBzZV8wYMgT91EznZ441h7jvyRG36SA== X-Received: by 2002:a05:6a00:1995:b0:47c:1e13:b679 with SMTP id d21-20020a056a00199500b0047c1e13b679mr51509474pfl.19.1636030520161; Thu, 04 Nov 2021 05:55:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwYGIn3pH8idaTC9oZIblsxSnGVRokrnHOp/T6Cq0To0fdHwSW7Cx8ae9zGTNUe2C+8ncjtuw== X-Received: by 2002:a05:6a00:1995:b0:47c:1e13:b679 with SMTP id d21-20020a056a00199500b0047c1e13b679mr51509446pfl.19.1636030519923; Thu, 04 Nov 2021 05:55:19 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:19 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 11/41] clocksource/hyperv: use MSR-based access if running as root Date: Thu, 4 Nov 2021 06:54:19 -0600 Message-Id: <20211104125449.16540-12-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Wei Liu BugLink: https://bugs.launchpad.net/bugs/1949770 When Linux runs as the root partition, the setup required for TSC page is different. Luckily Linux also has access to the MSR based clocksource. We can just disable the TSC page clocksource if Linux is the root partition. Signed-off-by: Wei Liu Acked-by: Daniel Lezcano Reviewed-by: Pavel Tatashin Reviewed-by: Michael Kelley Link: https://lore.kernel.org/r/20210203150435.27941-5-wei.liu@kernel.org (cherry picked from commit 7d4163c8315729140ad99d6e1ab10dfc7a685640) Signed-off-by: Marcelo Henrique Cerri --- drivers/clocksource/hyperv_timer.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c index 4c9e6a87c438..10eb5c645141 100644 --- a/drivers/clocksource/hyperv_timer.c +++ b/drivers/clocksource/hyperv_timer.c @@ -455,6 +455,9 @@ static bool __init hv_init_tsc_clocksource(void) if (!(ms_hyperv.features & HV_MSR_REFERENCE_TSC_AVAILABLE)) return false; + if (hv_root_partition) + return false; + hv_read_reference_counter = read_hv_clock_tsc; phys_addr = virt_to_phys(hv_get_tsc_page()); From patchwork Thu Nov 4 12:54:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550906 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=Zyv4+Ci0; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNtK3whbz9s0r for ; Thu, 4 Nov 2021 23:56:09 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micHd-0005Aq-CV; Thu, 04 Nov 2021 12:55:57 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micH5-0004Tw-ST for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:23 +0000 Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id B2E613F1F5 for ; Thu, 4 Nov 2021 12:55:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030522; bh=kTnMDT4l1EAiyFcsSCwOeX0nCOSQYNblX/u9RkOBkZ4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Zyv4+Ci068YIbpTZDehcIlRWhjuLKBu+FAjiKqg/SpqmkO/UOZE8DTQJ3N69JICVP k6xDGUlZcOBrFia+jnpyFljxmZH+HDgGByuIREJbG7evQtAI23aPbeS3l62PUOTE9R azKplRk8J+f8Cnycm2AbxcmC22C5rmybk2VAPJKu9Rq3vdWh1iJ8H2PSNi28JtDl7s aotK/batJcFWOEtpX5Zyw59DmZQVYm6KmrP1tf64tYRtt/jFSG+JCcugjExsWbw4QU x2YjbgnIPoU+2JltqS/aM25d8+dmjFodvMNIqzFk3wpI9MyNtVaTHUiq3u4qwK7dvY agOSCuITdoPyQ== Received: by mail-pf1-f197.google.com with SMTP id 134-20020a62198c000000b0047bf0981003so3757085pfz.4 for ; Thu, 04 Nov 2021 05:55:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=kTnMDT4l1EAiyFcsSCwOeX0nCOSQYNblX/u9RkOBkZ4=; b=CA09xJZM5XP261iDXd24eMfVt6G7T+CsJyMIDTY0guPBC78S2UfLbFky09zPFI5RZn BWJY9q4Fc35mc/FiEZ+TzKm+d42V4EH8SCXwbgAARJMRO7xtE/267PGk0tbk/O5JFtvy bxPTFQTlPR+3GLXiKKamBYeoohDpbnyGVm3GX9ZgwngI4gnnIkdACW3tMxhu6ADWfr0d xgV+BAGh9zWiSmWKQEdtT3ZpovaA6N5tnc4+kVO0HpL7khxTS6MVQsKP901cAP4HexxK MeqEgqxuN/e6YEsAyroyGcisN4Ofx2e487yFqWhhvDdKIo4G0jQJA7R3RbtMNAMfR3Ow cjUQ== X-Gm-Message-State: AOAM5311E4rCk67e79MXN80cqkCqXKIpweA215PWJD9ij5wYKf39RM2a MPE4m8mP3CsrFcPltogbMuVT+p5wBmLpI78/GWhhH0g7JwxWhQfROQBUlZfNPaetqvnQIoFO8l4 U/j2p9N1j9Q1stElJDfEvCZopeh2mgCwqbStImBNraA== X-Received: by 2002:a63:8143:: with SMTP id t64mr12287322pgd.43.1636030520926; Thu, 04 Nov 2021 05:55:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyI+zZSvhjZVQHZi//gNYBWxZgulAB8ImJb6WBgweT2AZr88O1qXTJJZEvOwihONE2cRyXu/A== X-Received: by 2002:a63:8143:: with SMTP id t64mr12287309pgd.43.1636030520670; Thu, 04 Nov 2021 05:55:20 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:20 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 12/41] clocksource/drivers/hyper-v: Set clocksource rating based on Hyper-V feature Date: Thu, 4 Nov 2021 06:54:20 -0600 Message-Id: <20211104125449.16540-13-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 On x86/x64, the TSC clocksource is available in a Hyper-V VM only if Hyper-V provides the TSC_INVARIANT flag. The rating on the Hyper-V Reference TSC page clocksource is currently set so that it will not override the TSC clocksource in this case. Alternatively, if the TSC clocksource is not available, then the Hyper-V clocksource is used. But on ARM64, the Hyper-V Reference TSC page clocksource should override the ARM arch counter, since the Hyper-V clocksource provides scaling and offsetting during live migrations that is not provided for the ARM arch counter. To get the needed behavior for both x86/x64 and ARM64, tweak the logic by defaulting the Hyper-V Reference TSC page clocksource rating to a large value that will always override. If the Hyper-V TSC_INVARIANT flag is set, then reduce the rating so that it will not override the TSC. While the logic for getting there is slightly different, the net result in the normal cases is no functional change. Signed-off-by: Michael Kelley Acked-by: Daniel Lezcano Link: https://lore.kernel.org/r/1614721102-2241-10-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (cherry picked from commit 4c78738ead4e195c7032c31fe56135c1b00e1784) Signed-off-by: Marcelo Henrique Cerri --- drivers/clocksource/hyperv_timer.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c index 10eb5c645141..7a9030ca68c4 100644 --- a/drivers/clocksource/hyperv_timer.c +++ b/drivers/clocksource/hyperv_timer.c @@ -302,14 +302,6 @@ EXPORT_SYMBOL_GPL(hv_stimer_global_cleanup); * the other that uses the TSC reference page feature as defined in the * TLFS. The MSR version is for compatibility with old versions of * Hyper-V and 32-bit x86. The TSC reference page version is preferred. - * - * The Hyper-V clocksource ratings of 250 are chosen to be below the - * TSC clocksource rating of 300. In configurations where Hyper-V offers - * an InvariantTSC, the TSC is not marked "unstable", so the TSC clocksource - * is available and preferred. With the higher rating, it will be the - * default. On older hardware and Hyper-V versions, the TSC is marked - * "unstable", so no TSC clocksource is created and the selected Hyper-V - * clocksource will be the default. */ u64 (*hv_read_reference_counter)(void); @@ -380,7 +372,7 @@ static int hv_cs_enable(struct clocksource *cs) static struct clocksource hyperv_cs_tsc = { .name = "hyperv_clocksource_tsc_page", - .rating = 250, + .rating = 500, .read = read_hv_clock_tsc_cs, .mask = CLOCKSOURCE_MASK(64), .flags = CLOCK_SOURCE_IS_CONTINUOUS, @@ -417,7 +409,7 @@ static u64 notrace read_hv_sched_clock_msr(void) static struct clocksource hyperv_cs_msr = { .name = "hyperv_clocksource_msr", - .rating = 250, + .rating = 500, .read = read_hv_clock_msr_cs, .mask = CLOCKSOURCE_MASK(64), .flags = CLOCK_SOURCE_IS_CONTINUOUS, @@ -458,6 +450,17 @@ static bool __init hv_init_tsc_clocksource(void) if (hv_root_partition) return false; + /* + * If Hyper-V offers TSC_INVARIANT, then the virtualized TSC correctly + * handles frequency and offset changes due to live migration, + * pause/resume, and other VM management operations. So lower the + * Hyper-V Reference TSC rating, causing the generic TSC to be used. + * TSC_INVARIANT is not offered on ARM64, so the Hyper-V Reference + * TSC will be preferred over the virtualized ARM64 arch counter. + */ + if (ms_hyperv.features & HV_ACCESS_TSC_INVARIANT) + hyperv_cs_tsc.rating = 250; + hv_read_reference_counter = read_hv_clock_tsc; phys_addr = virt_to_phys(hv_get_tsc_page()); From patchwork Thu Nov 4 12:54:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550905 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=dLXndFF4; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNtG3Qv9z9s0r for ; Thu, 4 Nov 2021 23:56:06 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micHX-00054U-Kw; Thu, 04 Nov 2021 12:55:51 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micH8-0004W5-Co for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:26 +0000 Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 538CD3F1C0 for ; Thu, 4 Nov 2021 12:55:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030524; bh=zINLHFntLhtwPGvQHlSXGKl+e3TXBM6BA64n7QEBZUQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dLXndFF4I8OkoyAr3eHrW6Ldcfe/pMfqfQNA8JMQPYR3IAudduOAgRsUuKYulHszZ p0e+r2MpNlyF7ZJiG0J/O5InLMr1kQpUPRR5w+ydjgrNpZxbPJgKp+wOoJ5rrJh28q ZuiQnWiB1TMKwNb7EnE1U7B7qeUC7yGkLo5XVNhXOAeyAl10n8X6bp99VNeAq8vhaP is/y3ayienQlzWucICBezy+AnkBic9BGlDf/ZwjLedOuE7cm3eAHuCFQaRQkIzqhFU t9cwsrTdZuvuWPLa4ENXWMs8532sOc2aec36pJvkm4DoZjA+qu9xiDD/BgxB5xhVJH Q15Sq3z1OXQrA== Received: by mail-pf1-f198.google.com with SMTP id m26-20020a62a21a000000b0041361973ba7so3734081pff.15 for ; Thu, 04 Nov 2021 05:55:24 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zINLHFntLhtwPGvQHlSXGKl+e3TXBM6BA64n7QEBZUQ=; b=qtlXD1vqTKs/NWLwXzh2hCQiCeokutIWRj6eWYpqVdcTRLJGeGnHVlKd7/mDgQZj4z 6yfztvNYxr3beFNnsz9mk+trPY8vm67xyBHOhjnkVeIHUyxZaJDJ3VwXF+AQ3VHXnFcL ghQAdamsJtDB33GdHU+X0aXgWWZ+dtAnP4LWPRzlbEO8OejsdztrU9aZPm+NSiVzix6v hAFnfOx5FcXHrGn2Yogy6VHw287De2/u4BciBVR3iHI69HdDW5cSyn9QRWnZvR6NphV9 sKWrHEc9vZ+HsAuYO3/2Mg76WeKG+2piNDgaEtEMB6ic70oJxCMa1AoP8LatGj8eiO0y zrXA== X-Gm-Message-State: AOAM533KDkuePLVoD0cQ13/5IsdR5hpSm+tvcgNcsvfoezqx4t/hZxaz 09MpaO39ceb04xa36kf/hWPII6Lor3PpuMPjMnuJAAkWGQBrMY9IfrLBKPVQkahALAASVfkGTfP 1u22CEOaMRd4qV+kqj4OP0kdxGrmUaRgZPuZhEC7c5Q== X-Received: by 2002:a17:90a:1283:: with SMTP id g3mr4859827pja.174.1636030521908; Thu, 04 Nov 2021 05:55:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwPFgZjZnvyM9+jw8/1qG547eyzT8JAE+fMyQGWWfq/Y8Wnli4DCW0dvb+JCzoOQ/hWm97zUQ== X-Received: by 2002:a17:90a:1283:: with SMTP id g3mr4859778pja.174.1636030521447; Thu, 04 Nov 2021 05:55:21 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:21 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 13/41] clocksource/drivers/hyper-v: Move handling of STIMER0 interrupts Date: Thu, 4 Nov 2021 06:54:21 -0600 Message-Id: <20211104125449.16540-14-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 STIMER0 interrupts are most naturally modeled as per-cpu IRQs. But because x86/x64 doesn't have per-cpu IRQs, the core STIMER0 interrupt handling machinery is done in code under arch/x86 and Linux IRQs are not used. Adding support for ARM64 means adding equivalent code using per-cpu IRQs under arch/arm64. A better model is to treat per-cpu IRQs as the normal path (which it is for modern architectures), and the x86/x64 path as the exception. Do this by incorporating standard Linux per-cpu IRQ allocation into the main SITMER0 driver code, and bypass it in the x86/x64 exception case. For x86/x64, special case code is retained under arch/x86, but no STIMER0 interrupt handling code is needed under arch/arm64. No functional change. Signed-off-by: Michael Kelley Acked-by: Daniel Lezcano Link: https://lore.kernel.org/r/1614721102-2241-11-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (cherry picked from commit ec866be6ec547c9e1cc4451f04250e08b5fe67c7) Signed-off-by: Marcelo Henrique Cerri --- arch/x86/hyperv/hv_init.c | 2 +- arch/x86/include/asm/mshyperv.h | 4 - arch/x86/kernel/cpu/mshyperv.c | 10 +- drivers/clocksource/hyperv_timer.c | 168 ++++++++++++++++++++--------- include/asm-generic/mshyperv.h | 5 - include/clocksource/hyperv_timer.h | 3 +- 6 files changed, 120 insertions(+), 72 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c index e145a215e5b1..25b53aa5c947 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -309,7 +309,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. */ - (void)hv_stimer_alloc(); + (void)hv_stimer_alloc(false); /* * Still register the LAPIC timer, because the direct-mode STIMER is diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h index 2539e756c0e3..4548d2deb5b8 100644 --- a/arch/x86/include/asm/mshyperv.h +++ b/arch/x86/include/asm/mshyperv.h @@ -31,10 +31,6 @@ static inline u64 hv_get_register(unsigned int reg) void hyperv_vector_handler(struct pt_regs *regs); -static inline void hv_enable_stimer0_percpu_irq(int irq) {} -static inline void hv_disable_stimer0_percpu_irq(int irq) {} - - #if IS_ENABLED(CONFIG_HYPERV) extern int hyperv_init_cpuhp; diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c index 67ba735a3f42..b86cb2f4364f 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -89,21 +89,17 @@ DEFINE_IDTENTRY_SYSVEC(sysvec_hyperv_stimer0) set_irq_regs(old_regs); } -int hv_setup_stimer0_irq(int *irq, int *vector, void (*handler)(void)) +/* For x86/x64, override weak placeholders in hyperv_timer.c */ +void hv_setup_stimer0_handler(void (*handler)(void)) { - *vector = HYPERV_STIMER0_VECTOR; - *irq = -1; /* Unused on x86/x64 */ hv_stimer0_handler = handler; - return 0; } -EXPORT_SYMBOL_GPL(hv_setup_stimer0_irq); -void hv_remove_stimer0_irq(int irq) +void hv_remove_stimer0_handler(void) { /* We have no way to deallocate the interrupt gate */ hv_stimer0_handler = NULL; } -EXPORT_SYMBOL_GPL(hv_remove_stimer0_irq); void hv_setup_kexec_handler(void (*handler)(void)) { diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c index 7a9030ca68c4..ce94f78eb851 100644 --- a/drivers/clocksource/hyperv_timer.c +++ b/drivers/clocksource/hyperv_timer.c @@ -18,6 +18,9 @@ #include #include #include +#include +#include +#include #include #include #include @@ -43,14 +46,13 @@ static u64 hv_sched_clock_offset __ro_after_init; */ static bool direct_mode_enabled; -static int stimer0_irq; -static int stimer0_vector; +static int stimer0_irq = -1; static int stimer0_message_sint; +static DEFINE_PER_CPU(long, stimer0_evt); /* - * ISR for when stimer0 is operating in Direct Mode. Direct Mode - * does not use VMbus or any VMbus messages, so process here and not - * in the VMbus driver code. + * Common code for stimer0 interrupts coming via Direct Mode or + * as a VMbus message. */ void hv_stimer0_isr(void) { @@ -61,6 +63,16 @@ void hv_stimer0_isr(void) } EXPORT_SYMBOL_GPL(hv_stimer0_isr); +/* + * stimer0 interrupt handler for architectures that support + * per-cpu interrupts, which also implies Direct Mode. + */ +static irqreturn_t hv_stimer0_percpu_isr(int irq, void *dev_id) +{ + hv_stimer0_isr(); + return IRQ_HANDLED; +} + static int hv_ce_set_next_event(unsigned long delta, struct clock_event_device *evt) { @@ -76,8 +88,8 @@ static int hv_ce_shutdown(struct clock_event_device *evt) { hv_set_register(HV_REGISTER_STIMER0_COUNT, 0); hv_set_register(HV_REGISTER_STIMER0_CONFIG, 0); - if (direct_mode_enabled) - hv_disable_stimer0_percpu_irq(stimer0_irq); + if (direct_mode_enabled && stimer0_irq >= 0) + disable_percpu_irq(stimer0_irq); return 0; } @@ -95,8 +107,9 @@ static int hv_ce_set_oneshot(struct clock_event_device *evt) * on the specified hardware vector/IRQ. */ timer_cfg.direct_mode = 1; - timer_cfg.apic_vector = stimer0_vector; - hv_enable_stimer0_percpu_irq(stimer0_irq); + timer_cfg.apic_vector = HYPERV_STIMER0_VECTOR; + if (stimer0_irq >= 0) + enable_percpu_irq(stimer0_irq, IRQ_TYPE_NONE); } else { /* * When it expires, the timer will generate a VMbus message, @@ -169,10 +182,58 @@ int hv_stimer_cleanup(unsigned int cpu) } EXPORT_SYMBOL_GPL(hv_stimer_cleanup); +/* + * These placeholders are overridden by arch specific code on + * architectures that need special setup of the stimer0 IRQ because + * they don't support per-cpu IRQs (such as x86/x64). + */ +void __weak hv_setup_stimer0_handler(void (*handler)(void)) +{ +}; + +void __weak hv_remove_stimer0_handler(void) +{ +}; + +/* Called only on architectures with per-cpu IRQs (i.e., not x86/x64) */ +static int hv_setup_stimer0_irq(void) +{ + int ret; + + ret = acpi_register_gsi(NULL, HYPERV_STIMER0_VECTOR, + ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_HIGH); + if (ret < 0) { + pr_err("Can't register Hyper-V stimer0 GSI. Error %d", ret); + return ret; + } + stimer0_irq = ret; + + ret = request_percpu_irq(stimer0_irq, hv_stimer0_percpu_isr, + "Hyper-V stimer0", &stimer0_evt); + if (ret) { + pr_err("Can't request Hyper-V stimer0 IRQ %d. Error %d", + stimer0_irq, ret); + acpi_unregister_gsi(stimer0_irq); + stimer0_irq = -1; + } + return ret; +} + +static void hv_remove_stimer0_irq(void) +{ + if (stimer0_irq == -1) { + hv_remove_stimer0_handler(); + } else { + free_percpu_irq(stimer0_irq, &stimer0_evt); + acpi_unregister_gsi(stimer0_irq); + stimer0_irq = -1; + } +} + /* hv_stimer_alloc - Global initialization of the clockevent and stimer0 */ -int hv_stimer_alloc(void) +int hv_stimer_alloc(bool have_percpu_irqs) { - int ret = 0; + int ret; /* * Synthetic timers are always available except on old versions of @@ -188,29 +249,37 @@ int hv_stimer_alloc(void) direct_mode_enabled = ms_hyperv.misc_features & HV_STIMER_DIRECT_MODE_AVAILABLE; - if (direct_mode_enabled) { - ret = hv_setup_stimer0_irq(&stimer0_irq, &stimer0_vector, - hv_stimer0_isr); + + /* + * If Direct Mode isn't enabled, the remainder of the initialization + * is done later by hv_stimer_legacy_init() + */ + if (!direct_mode_enabled) + return 0; + + if (have_percpu_irqs) { + ret = hv_setup_stimer0_irq(); if (ret) - goto free_percpu; + goto free_clock_event; + } else { + hv_setup_stimer0_handler(hv_stimer0_isr); + } - /* - * Since we are in Direct Mode, stimer initialization - * can be done now with a CPUHP value in the same range - * as other clockevent devices. - */ - ret = cpuhp_setup_state(CPUHP_AP_HYPERV_TIMER_STARTING, - "clockevents/hyperv/stimer:starting", - hv_stimer_init, hv_stimer_cleanup); - if (ret < 0) - goto free_stimer0_irq; + /* + * Since we are in Direct Mode, stimer initialization + * can be done now with a CPUHP value in the same range + * as other clockevent devices. + */ + ret = cpuhp_setup_state(CPUHP_AP_HYPERV_TIMER_STARTING, + "clockevents/hyperv/stimer:starting", + hv_stimer_init, hv_stimer_cleanup); + if (ret < 0) { + hv_remove_stimer0_irq(); + goto free_clock_event; } return ret; -free_stimer0_irq: - hv_remove_stimer0_irq(stimer0_irq); - stimer0_irq = 0; -free_percpu: +free_clock_event: free_percpu(hv_clock_event); hv_clock_event = NULL; return ret; @@ -254,23 +323,6 @@ void hv_stimer_legacy_cleanup(unsigned int cpu) } EXPORT_SYMBOL_GPL(hv_stimer_legacy_cleanup); - -/* hv_stimer_free - Free global resources allocated by hv_stimer_alloc() */ -void hv_stimer_free(void) -{ - if (!hv_clock_event) - return; - - if (direct_mode_enabled) { - cpuhp_remove_state(CPUHP_AP_HYPERV_TIMER_STARTING); - hv_remove_stimer0_irq(stimer0_irq); - stimer0_irq = 0; - } - free_percpu(hv_clock_event); - hv_clock_event = NULL; -} -EXPORT_SYMBOL_GPL(hv_stimer_free); - /* * Do a global cleanup of clockevents for the cases of kexec and * vmbus exit @@ -287,12 +339,17 @@ void hv_stimer_global_cleanup(void) hv_stimer_legacy_cleanup(cpu); } - /* - * If Direct Mode is enabled, the cpuhp teardown callback - * (hv_stimer_cleanup) will be run on all CPUs to stop the - * stimers. - */ - hv_stimer_free(); + if (!hv_clock_event) + return; + + if (direct_mode_enabled) { + cpuhp_remove_state(CPUHP_AP_HYPERV_TIMER_STARTING); + hv_remove_stimer0_irq(); + stimer0_irq = -1; + } + free_percpu(hv_clock_event); + hv_clock_event = NULL; + } EXPORT_SYMBOL_GPL(hv_stimer_global_cleanup); @@ -457,9 +514,14 @@ static bool __init hv_init_tsc_clocksource(void) * Hyper-V Reference TSC rating, causing the generic TSC to be used. * TSC_INVARIANT is not offered on ARM64, so the Hyper-V Reference * TSC will be preferred over the virtualized ARM64 arch counter. + * While the Hyper-V MSR clocksource won't be used since the + * Reference TSC clocksource is present, change its rating as + * well for consistency. */ - if (ms_hyperv.features & HV_ACCESS_TSC_INVARIANT) + if (ms_hyperv.features & HV_ACCESS_TSC_INVARIANT) { hyperv_cs_tsc.rating = 250; + hyperv_cs_msr.rating = 250; + } hv_read_reference_counter = read_hv_clock_tsc; phys_addr = virt_to_phys(hv_get_tsc_page()); diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h index 9f4089bfcd80..c2718707435d 100644 --- a/include/asm-generic/mshyperv.h +++ b/include/asm-generic/mshyperv.h @@ -178,9 +178,4 @@ static inline bool hv_is_hibernation_supported(void) { return false; } static inline void hyperv_cleanup(void) {} #endif /* CONFIG_HYPERV */ -#if IS_ENABLED(CONFIG_HYPERV) -extern int hv_setup_stimer0_irq(int *irq, int *vector, void (*handler)(void)); -extern void hv_remove_stimer0_irq(int irq); -#endif - #endif diff --git a/include/clocksource/hyperv_timer.h b/include/clocksource/hyperv_timer.h index 34eef083c988..b6774aa5a4b8 100644 --- a/include/clocksource/hyperv_timer.h +++ b/include/clocksource/hyperv_timer.h @@ -21,8 +21,7 @@ #define HV_MIN_DELTA_TICKS 1 /* Routines called by the VMbus driver */ -extern int hv_stimer_alloc(void); -extern void hv_stimer_free(void); +extern int hv_stimer_alloc(bool have_percpu_irqs); extern int hv_stimer_cleanup(unsigned int cpu); extern void hv_stimer_legacy_init(unsigned int cpu, int sint); extern void hv_stimer_legacy_cleanup(unsigned int cpu); From patchwork Thu Nov 4 12:54:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550907 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=sD2FLVpP; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNtM3KYbz9s0r for ; Thu, 4 Nov 2021 23:56:11 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micHe-0005CY-IH; Thu, 04 Nov 2021 12:55:58 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micH7-0004Vi-PL for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:25 +0000 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 4ECBF3F1F5 for ; Thu, 4 Nov 2021 12:55:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030524; bh=aheVLm3EbAtvakf6sRZOlc0tXDhLJ8KC44j+C+RxJa4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=sD2FLVpPF9JgxFx9bF9DYhcT4/sHzlrKbpQvyYTVgee0BZwJuyflMXVB9l1FHas5d ZN4zFHq+f1Y1lutPHC9FFHZ64hbOdLJKcIKTSKWJmE+gfcCHHXhtHyhxITiz1kX8QW zUi/x+NDADWbXaMrLLGSFBBOsfaeSD8Bsiulq6UgCZqTYEwfrvQj2pFsnREE0ocVvN NGQpjEP99ePbq9Uys7K0AF7naUcICXg4D45F45N7zFohX0Pxn8Nd7l9B6PuUrNbSz0 chgVNQ0FQz8FpDHOiTlSypIEZHR5qnx3qBiE+rb+gVNv6ThB/0It5JTMcd3gjkU5kf y6LtOzxKI+mZw== Received: by mail-pg1-f197.google.com with SMTP id u5-20020a63d3450000b029023a5f6e6f9bso3619503pgi.21 for ; Thu, 04 Nov 2021 05:55:24 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=aheVLm3EbAtvakf6sRZOlc0tXDhLJ8KC44j+C+RxJa4=; b=BcmESKA/hkECg/l4k3CNfyComb/IAw2D1Q695gfILJTi+5TF3wQ67VEeAiD7A839Ii Le/d1NsoMjl2wKurXY2fWOzuiWo0pfFYtqCpONOFQdwgnHLG6BakjMtriQeWYE/4wM3P QiLLinr8O0MbpZqUWJhu6YZjA+yh1HkVweN0z5K68bYcBs/DO9v7G9emHqXKjcnPK5nk 8xlNvi9UDK2BNm7Wac3VAnq93fPmZY/3epw8fJ8gZ/evUv+P3F0vbpDbcOSn3ozfHaqG acmbgn/9feCw25Oa0oN/fMc9Abkf9TKMKqiGR3PQY519gy3UV8hev1ywUHP1d2hbRU/E f4iA== X-Gm-Message-State: AOAM533uBWEHMnrvyuS/ffUjcSQkKj3/UvftxQD0NWi77xnGXMzWSaHx duTtQ6Nf18HOk/EWc09PK9QgpVVd1RdrZwgtLelLul5p3ljxRD0UrX324EAOHeaMDUGRum0n9/2 zs/6zI/jA8XmfMa42TWproXrXcRKXogKHSm3lBjlK5w== X-Received: by 2002:a63:804a:: with SMTP id j71mr26276866pgd.472.1636030522548; Thu, 04 Nov 2021 05:55:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxfvNFMqYeyHb5n1i/UaXWPs0hH13L79PTI92nf2S7qZXdlofzXjNK2Nya+Ul+fOKgJpRdogQ== X-Received: by 2002:a63:804a:: with SMTP id j71mr26276845pgd.472.1636030522255; Thu, 04 Nov 2021 05:55:22 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:21 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 14/41] drivers: hv: Fix whitespace errors Date: Thu, 4 Nov 2021 06:54:22 -0600 Message-Id: <20211104125449.16540-15-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Vasanth BugLink: https://bugs.launchpad.net/bugs/1949770 Fixed checkpatch warning and errors on hv driver. Signed-off-by: Vasanth Mathivanan Link: https://lore.kernel.org/r/20210219171311.421961-1-vasanth3g@gmail.com Reviewed-by: Michael Kelley Signed-off-by: Wei Liu (cherry picked from commit f850a4cad27c3cfeb89fd28c768d5e6821bf178f) Signed-off-by: Marcelo Henrique Cerri --- drivers/hv/channel.c | 2 +- drivers/hv/connection.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c index 061c8b5589ef..c33f0e3383f6 100644 --- a/drivers/hv/channel.c +++ b/drivers/hv/channel.c @@ -400,7 +400,7 @@ static int create_gpadl_header(enum hv_gpadl_type type, void *kbuffer, * @kbuffer: from kmalloc or vmalloc * @size: page-size multiple * @send_offset: the offset (in bytes) where the send ring buffer starts, - * should be 0 for BUFFER type gpadl + * should be 0 for BUFFER type gpadl * @gpadl_handle: some funky thing */ static int __vmbus_establish_gpadl(struct vmbus_channel *channel, diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c index 6f54c9ce4779..351657988cf7 100644 --- a/drivers/hv/connection.c +++ b/drivers/hv/connection.c @@ -30,7 +30,7 @@ struct vmbus_connection vmbus_connection = { vmbus_connection.unload_event), .next_gpadl_handle = ATOMIC_INIT(0xE1E10), - .ready_for_suspend_event= COMPLETION_INITIALIZER( + .ready_for_suspend_event = COMPLETION_INITIALIZER( vmbus_connection.ready_for_suspend_event), .ready_for_resume_event = COMPLETION_INITIALIZER( vmbus_connection.ready_for_resume_event), From patchwork Thu Nov 4 12:54:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550908 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=MUEaApB9; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNtW5sG7z9s0r for ; Thu, 4 Nov 2021 23:56:19 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micHk-0005Js-VC; Thu, 04 Nov 2021 12:56:05 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micH9-0004X9-FE for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:27 +0000 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 995AF3F1F6 for ; Thu, 4 Nov 2021 12:55:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030525; bh=YwvTL4qhBkd8zeX58gojk0uDH8RxRCpEKwLvJYCA8t0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MUEaApB9glxHg51vyL33gnJy2NKoHCmruZqmKPR0KVvnSf/f7nB++CqTHlMAKuNLv WMITcfSrqDoZ+bnqHlD35RzA6mcobSIqVYy+YxbCG0Z0moCLNelqXu3t5pZQfCUCwN h5JR2JdkkGgXSSp9L43cxwpoiGtVOIKZqyk0y/12HIKIre23hSzldtLkmJBzsTn8U/ ycFjsDAe1VHxKTWa2FwP9LssIAS0MNEfUPGoFWoENxkcUcLMtemOdkfLMHeIAUYJ7b btY+ETefOeJr01hrLNh0sSlUSOp4pk+wfqCF12jZIU05fQk6xLm8H4Vn7+3tvg5bth qa1Ab3XmuwqGQ== Received: by mail-pg1-f197.google.com with SMTP id r7-20020a63ce47000000b002a5cadd2f25so3658367pgi.9 for ; Thu, 04 Nov 2021 05:55:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YwvTL4qhBkd8zeX58gojk0uDH8RxRCpEKwLvJYCA8t0=; b=6UlV9TO9xEnKiSpkLVtMx6hlwY3jWaNGfmx96TuzRt5Acr/74yhaX8DKs+ajwwUBYM e+Mr8ZyaL/BXcMSLr/+EM8GVORJwBp8n3GsdIfUOAXdd2cGFS8oYG2XLRGjRjKBE9Onn lff1ZTjLcf+WfKBb728AoLqjWma7sNx1NlkcI+1g4a3tERO9fdYheSmTHfq8guJr1cPl baoQ65sEqf+PAoSTqVG/YGDjSfbdrpktgIBq11HbGXkW9Um4Px82/uYaopfeKWvnSNbB sJS7ipzCGB0S2ZXhf3HxqGiMZdNkAv8QabqCB8ZgZEGmoHbQwK4J1+MUR8mSrqpUaquP eNOg== X-Gm-Message-State: AOAM5304opni3vPdNJPnsGg3ZNzPcnaiPyZSLcBcj/4aJ0ut0AEh7Pj4 mKBEMWFmnOw8PC7KD8Q2mPSCLZ+JIuxXMBkhZA+CkTQXWc29Hj1NLDyGg4GrFLxOvh4+2hvSoaq fP2fmkPMbsVFYRu9MdxgjERpQLpHNULYMHjz2NLJjsw== X-Received: by 2002:a63:e906:: with SMTP id i6mr12170036pgh.223.1636030523738; Thu, 04 Nov 2021 05:55:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyvbdQju69DvA6msuv70dq4RAHrZifYpJx/Am9Kf/bc6WO+q/KwPXQP70SfZEos8Idh52MGVw== X-Received: by 2002:a63:e906:: with SMTP id i6mr12170016pgh.223.1636030523359; Thu, 04 Nov 2021 05:55:23 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:22 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 15/41] x86/Hyper-V: Support for free page reporting Date: Thu, 4 Nov 2021 06:54:23 -0600 Message-Id: <20211104125449.16540-16-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Sunil Muthuswamy BugLink: https://bugs.launchpad.net/bugs/1949770 Linux has support for free page reporting now (36e66c554b5c) for virtualized environment. On Hyper-V when virtually backed VMs are configured, Hyper-V will advertise cold memory discard capability, when supported. This patch adds the support to hook into the free page reporting infrastructure and leverage the Hyper-V cold memory discard hint hypercall to report/free these pages back to the host. Signed-off-by: Sunil Muthuswamy Tested-by: Matheus Castello Reviewed-by: Michael Kelley Tested-by: Nathan Chancellor Link: https://lore.kernel.org/r/SN4PR2101MB0880121FA4E2FEC67F35C1DCC0649@SN4PR2101MB0880.namprd21.prod.outlook.com Signed-off-by: Wei Liu (back ported from commit 6dc2a774cb4fdb524b7eb0b8db74198a1b4815ea) [marcelo.cerri@canonical.com: adjusted context due to the lack of the patch set for VM isolation] Signed-off-by: Marcelo Henrique Cerri --- arch/x86/hyperv/hv_init.c | 50 +++++++++++++++++ arch/x86/kernel/cpu/mshyperv.c | 6 ++- drivers/hv/Kconfig | 1 + drivers/hv/hv_balloon.c | 89 +++++++++++++++++++++++++++++++ include/asm-generic/hyperv-tlfs.h | 35 +++++++++++- include/asm-generic/mshyperv.h | 2 + 6 files changed, 179 insertions(+), 4 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c index 25b53aa5c947..11b44b0db32a 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -414,6 +414,9 @@ void __init hyperv_init(void) register_syscore_ops(&hv_syscore_ops); hyperv_init_cpuhp = cpuhp; + + /* Query the VMs extended capability once, so that it can be cached. */ + hv_query_ext_cap(0); return; remove_cpuhp_state: @@ -514,3 +517,50 @@ bool hv_is_hibernation_supported(void) return acpi_sleep_state_supported(ACPI_STATE_S4); } EXPORT_SYMBOL_GPL(hv_is_hibernation_supported); + +/* Bit mask of the extended capability to query: see HV_EXT_CAPABILITY_xxx */ +bool hv_query_ext_cap(u64 cap_query) +{ + /* + * The address of the 'hv_extended_cap' variable will be used as an + * output parameter to the hypercall below and so it should be + * compatible with 'virt_to_phys'. Which means, it's address should be + * directly mapped. Use 'static' to keep it compatible; stack variables + * can be virtually mapped, making them imcompatible with + * 'virt_to_phys'. + * Hypercall input/output addresses should also be 8-byte aligned. + */ + static u64 hv_extended_cap __aligned(8); + static bool hv_extended_cap_queried; + u64 status; + + /* + * Querying extended capabilities is an extended hypercall. Check if the + * partition supports extended hypercall, first. + */ + if (!(ms_hyperv.priv_high & HV_ENABLE_EXTENDED_HYPERCALLS)) + return false; + + /* Extended capabilities do not change at runtime. */ + if (hv_extended_cap_queried) + return hv_extended_cap & cap_query; + + status = hv_do_hypercall(HV_EXT_CALL_QUERY_CAPABILITIES, NULL, + &hv_extended_cap); + + /* + * The query extended capabilities hypercall should not fail under + * any normal circumstances. Avoid repeatedly making the hypercall, on + * error. + */ + hv_extended_cap_queried = true; + status &= HV_HYPERCALL_RESULT_MASK; + if (status != HV_STATUS_SUCCESS) { + pr_err("Hyper-V: Extended query capabilities hypercall failed 0x%llx\n", + status); + return false; + } + + return hv_extended_cap & cap_query; +} +EXPORT_SYMBOL_GPL(hv_query_ext_cap); diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c index b86cb2f4364f..77947bd68c08 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -238,11 +238,13 @@ static void __init ms_hyperv_init_platform(void) * Extract the features and hints */ ms_hyperv.features = cpuid_eax(HYPERV_CPUID_FEATURES); + ms_hyperv.priv_high = cpuid_ebx(HYPERV_CPUID_FEATURES); ms_hyperv.misc_features = cpuid_edx(HYPERV_CPUID_FEATURES); ms_hyperv.hints = cpuid_eax(HYPERV_CPUID_ENLIGHTMENT_INFO); - pr_info("Hyper-V: features 0x%x, hints 0x%x, misc 0x%x\n", - ms_hyperv.features, ms_hyperv.hints, ms_hyperv.misc_features); + pr_info("Hyper-V: privilege flags low 0x%x, high 0x%x, hints 0x%x, misc 0x%x\n", + ms_hyperv.features, ms_hyperv.priv_high, ms_hyperv.hints, + ms_hyperv.misc_features); ms_hyperv.max_vp_index = cpuid_eax(HYPERV_CPUID_IMPLEMENT_LIMITS); ms_hyperv.max_lp_index = cpuid_ebx(HYPERV_CPUID_IMPLEMENT_LIMITS); diff --git a/drivers/hv/Kconfig b/drivers/hv/Kconfig index 79e5356a737a..66c794d92391 100644 --- a/drivers/hv/Kconfig +++ b/drivers/hv/Kconfig @@ -23,6 +23,7 @@ config HYPERV_UTILS config HYPERV_BALLOON tristate "Microsoft Hyper-V Balloon driver" depends on HYPERV + select PAGE_REPORTING help Select this option to enable Hyper-V Balloon driver. diff --git a/drivers/hv/hv_balloon.c b/drivers/hv/hv_balloon.c index ccea5019f296..99d588da5cc4 100644 --- a/drivers/hv/hv_balloon.c +++ b/drivers/hv/hv_balloon.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -565,6 +566,8 @@ struct hv_dynmem_device { * The negotiated version agreed by host. */ __u32 version; + + struct page_reporting_dev_info pr_dev_info; }; static struct hv_dynmem_device dm_device; @@ -1570,6 +1573,89 @@ static void balloon_onchannelcallback(void *context) } +/* Hyper-V only supports reporting 2MB pages or higher */ +#define HV_MIN_PAGE_REPORTING_ORDER 9 +#define HV_MIN_PAGE_REPORTING_LEN (HV_HYP_PAGE_SIZE << HV_MIN_PAGE_REPORTING_ORDER) +static int hv_free_page_report(struct page_reporting_dev_info *pr_dev_info, + struct scatterlist *sgl, unsigned int nents) +{ + unsigned long flags; + struct hv_memory_hint *hint; + int i; + u64 status; + struct scatterlist *sg; + + WARN_ON_ONCE(nents > HV_MEMORY_HINT_MAX_GPA_PAGE_RANGES); + WARN_ON_ONCE(sgl->length < HV_MIN_PAGE_REPORTING_LEN); + local_irq_save(flags); + hint = *(struct hv_memory_hint **)this_cpu_ptr(hyperv_pcpu_input_arg); + if (!hint) { + local_irq_restore(flags); + return -ENOSPC; + } + + hint->type = HV_EXT_MEMORY_HEAT_HINT_TYPE_COLD_DISCARD; + hint->reserved = 0; + for_each_sg(sgl, sg, nents, i) { + union hv_gpa_page_range *range; + + range = &hint->ranges[i]; + range->address_space = 0; + /* page reporting only reports 2MB pages or higher */ + range->page.largepage = 1; + range->page.additional_pages = + (sg->length / HV_MIN_PAGE_REPORTING_LEN) - 1; + range->page_size = HV_GPA_PAGE_RANGE_PAGE_SIZE_2MB; + range->base_large_pfn = + page_to_hvpfn(sg_page(sg)) >> HV_MIN_PAGE_REPORTING_ORDER; + } + + status = hv_do_rep_hypercall(HV_EXT_CALL_MEMORY_HEAT_HINT, nents, 0, + hint, NULL); + local_irq_restore(flags); + if ((status & HV_HYPERCALL_RESULT_MASK) != HV_STATUS_SUCCESS) { + pr_err("Cold memory discard hypercall failed with status %llx\n", + status); + return -EINVAL; + } + + return 0; +} + +static void enable_page_reporting(void) +{ + int ret; + + /* Essentially, validating 'PAGE_REPORTING_MIN_ORDER' is big enough. */ + if (pageblock_order < HV_MIN_PAGE_REPORTING_ORDER) { + pr_debug("Cold memory discard is only supported on 2MB pages and above\n"); + return; + } + + if (!hv_query_ext_cap(HV_EXT_CAPABILITY_MEMORY_COLD_DISCARD_HINT)) { + pr_debug("Cold memory discard hint not supported by Hyper-V\n"); + return; + } + + BUILD_BUG_ON(PAGE_REPORTING_CAPACITY > HV_MEMORY_HINT_MAX_GPA_PAGE_RANGES); + dm_device.pr_dev_info.report = hv_free_page_report; + ret = page_reporting_register(&dm_device.pr_dev_info); + if (ret < 0) { + dm_device.pr_dev_info.report = NULL; + pr_err("Failed to enable cold memory discard: %d\n", ret); + } else { + pr_info("Cold memory discard hint enabled\n"); + } +} + +static void disable_page_reporting(void) +{ + if (dm_device.pr_dev_info.report) { + page_reporting_unregister(&dm_device.pr_dev_info); + dm_device.pr_dev_info.report = NULL; + } +} + static int balloon_connect_vsp(struct hv_device *dev) { struct dm_version_request version_req; @@ -1715,6 +1801,7 @@ static int balloon_probe(struct hv_device *dev, if (ret != 0) return ret; + enable_page_reporting(); dm_device.state = DM_INITIALIZED; dm_device.thread = @@ -1729,6 +1816,7 @@ static int balloon_probe(struct hv_device *dev, probe_error: dm_device.state = DM_INIT_ERROR; dm_device.thread = NULL; + disable_page_reporting(); vmbus_close(dev->channel); #ifdef CONFIG_MEMORY_HOTPLUG unregister_memory_notifier(&hv_memory_nb); @@ -1751,6 +1839,7 @@ static int balloon_remove(struct hv_device *dev) cancel_work_sync(&dm->ha_wrk.wrk); kthread_stop(dm->thread); + disable_page_reporting(); vmbus_close(dev->channel); #ifdef CONFIG_MEMORY_HOTPLUG unregister_memory_notifier(&hv_memory_nb); diff --git a/include/asm-generic/hyperv-tlfs.h b/include/asm-generic/hyperv-tlfs.h index c2f5e81464cd..1775055bf724 100644 --- a/include/asm-generic/hyperv-tlfs.h +++ b/include/asm-generic/hyperv-tlfs.h @@ -89,7 +89,7 @@ #define HV_ACCESS_STATS BIT(8) #define HV_DEBUGGING BIT(11) #define HV_CPU_MANAGEMENT BIT(12) - +#define HV_ENABLE_EXTENDED_HYPERCALLS BIT(20) /* * TSC page layout. @@ -152,11 +152,18 @@ struct ms_hyperv_tsc_page { #define HVCALL_FLUSH_GUEST_PHYSICAL_ADDRESS_SPACE 0x00af #define HVCALL_FLUSH_GUEST_PHYSICAL_ADDRESS_LIST 0x00b0 +/* Extended hypercalls */ +#define HV_EXT_CALL_QUERY_CAPABILITIES 0x8001 +#define HV_EXT_CALL_MEMORY_HEAT_HINT 0x8003 + #define HV_FLUSH_ALL_PROCESSORS BIT(0) #define HV_FLUSH_ALL_VIRTUAL_ADDRESS_SPACES BIT(1) #define HV_FLUSH_NON_GLOBAL_MAPPINGS_ONLY BIT(2) #define HV_FLUSH_USE_EXTENDED_RANGE_FORMAT BIT(3) +/* Extended capability bits */ +#define HV_EXT_CAPABILITY_MEMORY_COLD_DISCARD_HINT BIT(8) + enum HV_GENERIC_SET_FORMAT { HV_GENERIC_SET_SPARSE_4K, HV_GENERIC_SET_ALL, @@ -401,8 +408,10 @@ struct hv_guest_mapping_flush { * by the bitwidth of "additional_pages" in union hv_gpa_page_range. */ #define HV_MAX_FLUSH_PAGES (2048) +#define HV_GPA_PAGE_RANGE_PAGE_SIZE_2MB 0 +#define HV_GPA_PAGE_RANGE_PAGE_SIZE_1GB 1 -/* HvFlushGuestPhysicalAddressList hypercall */ +/* HvFlushGuestPhysicalAddressList, HvExtCallMemoryHeatHint hypercall */ union hv_gpa_page_range { u64 address_space; struct { @@ -410,6 +419,12 @@ union hv_gpa_page_range { u64 largepage:1; u64 basepfn:52; } page; + struct { + u64 reserved:12; + u64 page_size:1; + u64 reserved1:8; + u64 base_large_pfn:43; + }; }; /* @@ -529,4 +544,20 @@ struct hv_set_vp_registers_input { } element[]; } __packed; +/* + * The whole argument should fit in a page to be able to pass to the hypervisor + * in one hypercall. + */ +#define HV_MEMORY_HINT_MAX_GPA_PAGE_RANGES \ + ((HV_HYP_PAGE_SIZE - sizeof(struct hv_memory_hint)) / \ + sizeof(union hv_gpa_page_range)) + +/* HvExtCallMemoryHeatHint hypercall */ +#define HV_EXT_MEMORY_HEAT_HINT_TYPE_COLD_DISCARD 2 +struct hv_memory_hint { + u64 type:2; + u64 reserved:62; + union hv_gpa_page_range ranges[]; +} __packed; + #endif diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h index c2718707435d..ffc7fcf0dd8b 100644 --- a/include/asm-generic/mshyperv.h +++ b/include/asm-generic/mshyperv.h @@ -27,6 +27,7 @@ struct ms_hyperv_info { u32 features; + u32 priv_high; u32 misc_features; u32 hints; u32 nested_features; @@ -172,6 +173,7 @@ void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die); bool hv_is_hyperv_initialized(void); bool hv_is_hibernation_supported(void); void hyperv_cleanup(void); +bool hv_query_ext_cap(u64 cap_query); #else /* CONFIG_HYPERV */ static inline bool hv_is_hyperv_initialized(void) { return false; } static inline bool hv_is_hibernation_supported(void) { return false; } From patchwork Thu Nov 4 12:54:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550909 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=KtiraMjJ; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNtc6WKPz9sP7 for ; Thu, 4 Nov 2021 23:56:24 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micHr-0005TU-VP; Thu, 04 Nov 2021 12:56:12 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micH9-0004Y1-Lz for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:27 +0000 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 2F1183F1F5 for ; Thu, 4 Nov 2021 12:55:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030526; bh=u5tPSHYEsf6IAWQb4Y/3qfoeTEjjvRSgsm6oqme/z1w=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KtiraMjJKtxzSn7Jb/rFucMoQUh0QdtpQzckNx0uYjKnt2p8i48WFjpNdy9oy0jJF awkJ4+b2wPUw4sAnqSYxB64gFJVJPE6aheNO2nXxtWFdX4FLVynLhYiooTO7/WOX61 8emkLp+cglBCrXERS+R/gDuM38JwnQJSgs6SzrMVde9y0KQxbYKDA0ruM6e65T3Q0c FjYz7b40Lo/oNPunX4TvynmmQI0nohLFQFxHOS8YeBl08S3Qm5ZfLJqfoHl3ejRxIb 2icloN0e/aJyP7aW0ZwWMbOhjh+9R7FJBU97s1MXXb5HkBRsentNZkDNlhfySoBz7a i+9I1801KAjVQ== Received: by mail-pl1-f198.google.com with SMTP id q2-20020a170902dac200b001422673d86fso2251340plx.20 for ; Thu, 04 Nov 2021 05:55:26 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=u5tPSHYEsf6IAWQb4Y/3qfoeTEjjvRSgsm6oqme/z1w=; b=YWzc/+dgQj25+Z7Yxkiw7lZWl+vbAgn6a9gdb11EXM7X0+vlD8+ef2XnOZw1TBPimQ a/7vr8GZiWSG9MXCCQwTGcZy/ZMOXsrDdMvVJVUj3kXGUDXYpM4C3Y4iS6WUXIQFM9Dz Mf5ugT9M/9S/Be1yZZuc83UNSs75gE/5whwClnoMd6YJJIskYVzFLrEUVbpZEwkzNT03 bY/+HZyXogC14WiIZQSnPzFPlyINQBazCdf1rCjPZFI8rGDkgclTM4us867QSvbKB6sK 8ux+8wwyL6ZvpdFuD/dWZe0gc5uvPgV49aGV5pTFrsmIGWTDEWTSOKa8VZ2WmNgiqqf7 rDLA== X-Gm-Message-State: AOAM530IpVdf6kmAz60i5LxYPzDyGvgWs0W1Mf2Xm/tp+StRBZ0BWlbq rqWUXtY1zIIzMzV4QtZulaEYxJurSg7flp+TPql2Y848yg1Ue24UmsyMu0oUMml6F5xxMuU34Vc nbtStjZL+PDTTy/7e/LPnKBT7WDdmHFA9+lLLHDdftw== X-Received: by 2002:a17:903:1207:b0:138:e2f9:6c98 with SMTP id l7-20020a170903120700b00138e2f96c98mr46044931plh.11.1636030524393; Thu, 04 Nov 2021 05:55:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyis9YCDY6shdUyjmMLN2xjzRqaXQiq7FCUdwkF4l0cq8uDHo+7Yg8L+r8CJQzE4B0juyxeDA== X-Received: by 2002:a17:903:1207:b0:138:e2f9:6c98 with SMTP id l7-20020a170903120700b00138e2f96c98mr46044903plh.11.1636030524089; Thu, 04 Nov 2021 05:55:24 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:23 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 16/41] x86/hyperv: Move hv_do_rep_hypercall to asm-generic Date: Thu, 4 Nov 2021 06:54:24 -0600 Message-Id: <20211104125449.16540-17-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Joseph Salisbury BugLink: https://bugs.launchpad.net/bugs/1949770 This patch makes no functional changes. It simply moves hv_do_rep_hypercall() out of arch/x86/include/asm/mshyperv.h and into asm-generic/mshyperv.h hv_do_rep_hypercall() is architecture independent, so it makes sense that it should be in the architecture independent mshyperv.h, not in the x86-specific mshyperv.h. This is done in preperation for a follow up patch which creates a consistent pattern for checking Hyper-V hypercall status. Signed-off-by: Joseph Salisbury Reviewed-by: Michael Kelley Link: https://lore.kernel.org/r/1618620183-9967-1-git-send-email-joseph.salisbury@linux.microsoft.com Signed-off-by: Wei Liu (cherry picked from commit 6523592cee4650c6aa997d69cd0045a01e07a1ef) Signed-off-by: Marcelo Henrique Cerri --- arch/x86/include/asm/mshyperv.h | 32 -------------------------------- include/asm-generic/mshyperv.h | 31 +++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h index 4548d2deb5b8..7c3ff0d38e04 100644 --- a/arch/x86/include/asm/mshyperv.h +++ b/arch/x86/include/asm/mshyperv.h @@ -140,38 +140,6 @@ static inline u64 hv_do_fast_hypercall16(u16 code, u64 input1, u64 input2) return hv_status; } -/* - * Rep hypercalls. Callers of this functions are supposed to ensure that - * rep_count and varhead_size comply with Hyper-V hypercall definition. - */ -static inline u64 hv_do_rep_hypercall(u16 code, u16 rep_count, u16 varhead_size, - void *input, void *output) -{ - u64 control = code; - u64 status; - u16 rep_comp; - - control |= (u64)varhead_size << HV_HYPERCALL_VARHEAD_OFFSET; - control |= (u64)rep_count << HV_HYPERCALL_REP_COMP_OFFSET; - - do { - status = hv_do_hypercall(control, input, output); - if ((status & HV_HYPERCALL_RESULT_MASK) != HV_STATUS_SUCCESS) - return status; - - /* Bits 32-43 of status have 'Reps completed' data. */ - rep_comp = (status & HV_HYPERCALL_REP_COMP_MASK) >> - HV_HYPERCALL_REP_COMP_OFFSET; - - control &= ~HV_HYPERCALL_REP_START_MASK; - control |= (u64)rep_comp << HV_HYPERCALL_REP_START_OFFSET; - - touch_nmi_watchdog(); - } while (rep_comp < rep_count); - - return status; -} - extern struct hv_vp_assist_page **hv_vp_assist_page; static inline struct hv_vp_assist_page *hv_get_vp_assist_page(unsigned int cpu) diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h index ffc7fcf0dd8b..7821d8180efe 100644 --- a/include/asm-generic/mshyperv.h +++ b/include/asm-generic/mshyperv.h @@ -39,6 +39,37 @@ extern struct ms_hyperv_info ms_hyperv; extern u64 hv_do_hypercall(u64 control, void *inputaddr, void *outputaddr); extern u64 hv_do_fast_hypercall8(u16 control, u64 input8); +/* + * Rep hypercalls. Callers of this functions are supposed to ensure that + * rep_count and varhead_size comply with Hyper-V hypercall definition. + */ +static inline u64 hv_do_rep_hypercall(u16 code, u16 rep_count, u16 varhead_size, + void *input, void *output) +{ + u64 control = code; + u64 status; + u16 rep_comp; + + control |= (u64)varhead_size << HV_HYPERCALL_VARHEAD_OFFSET; + control |= (u64)rep_count << HV_HYPERCALL_REP_COMP_OFFSET; + + do { + status = hv_do_hypercall(control, input, output); + if ((status & HV_HYPERCALL_RESULT_MASK) != HV_STATUS_SUCCESS) + return status; + + /* Bits 32-43 of status have 'Reps completed' data. */ + rep_comp = (status & HV_HYPERCALL_REP_COMP_MASK) >> + HV_HYPERCALL_REP_COMP_OFFSET; + + control &= ~HV_HYPERCALL_REP_START_MASK; + control |= (u64)rep_comp << HV_HYPERCALL_REP_START_OFFSET; + + touch_nmi_watchdog(); + } while (rep_comp < rep_count); + + return status; +} /* Generate the guest OS identifier as described in the Hyper-V TLFS */ static inline __u64 generate_guest_id(__u64 d_info1, __u64 kernel_version, From patchwork Thu Nov 4 12:54:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550911 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=gOUCad1R; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNtq0sMvz9sP7 for ; Thu, 4 Nov 2021 23:56:35 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micI5-0005wt-Is; Thu, 04 Nov 2021 12:56:25 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHD-0004bn-3R for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:31 +0000 Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 841323F1C2 for ; Thu, 4 Nov 2021 12:55:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030527; bh=2Zcc1cj3dOi7Tmi11m/S4tiUKuzFvKvAg4JmLsUzgt4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gOUCad1R+BMTFan0EHIyOyHV8lv6q1zVIY0GRbB/la97CYy8Hx9snM7+ZeBHgAd/j 6+EIWMNVc4tk8Sen3ryL9iKp2DXz8HeIpwONUucQeI4OYNcShVp/eQLBXJwNLySSwb udvRKsqJovnmEYia2L8nt+Jvvcq52kMQZQXPPZ1fKqBGgsL7jgR6B0yaJ1lQ+SOHvA 0BJG3iFiJ5aTa5IfW5DSZZVQjaz18fl0gm4STr8ruPQkmxwPaLwMRlSt8AS7PT57OE wSg+c9xDV+mIY29INjvms4z2E4UM3fOo3mTchQ0oh0ft68r04o1bQU36kPU9rgYAK1 Od6v6PShaXUZg== Received: by mail-pg1-f199.google.com with SMTP id n22-20020a6563d6000000b0029261ffde9bso3618166pgv.22 for ; Thu, 04 Nov 2021 05:55:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2Zcc1cj3dOi7Tmi11m/S4tiUKuzFvKvAg4JmLsUzgt4=; b=l/5cNohY8S/sGCYjahmGMG1oqgRyU07T/MRoNXMO78RUL5R3W8aQB18ycQpJattebG 6/KN6sEnh5Qayp8TfsJhgLHthaX7js+FhXwRHyoYceEv2DNpiWjqJ/sDiDHeUAKRRYJc hMot2P5Mkhee/R5CKsR4T0kyxnT8r3NeqjjdnLR/QlyHjHp0KSX8xwMCx/ozlrJ4t08U w1ngtSdnwN6KRZwZMJnVkebz3s+tiphLZ8SUJ26fYfA2KofWdrM/5B8Ua4vsPXcjbc1t 2tavqJ8wyAItDvSFq1CNWkH4NiwIaGtxjlbdB5m/Jm3QdZcaJBA0YwMbiBg3zgvEyHMU M/nw== X-Gm-Message-State: AOAM532eiwn9s1zX9eRaaBd7vvUhVTeNxNDyaKskegOjOuTgDIpR5TP7 On2iOWhYbjFdjDXf/FtAti/0+qWOhqkbQky295+duyr0eiO5AzkzKtkWlVb84nGkiRc9FxA++jA gckUbleEAbOB8hkuqRoTTL0Bym6BNdGdYAtcoFv2Meg== X-Received: by 2002:a17:903:283:b0:142:1243:d879 with SMTP id j3-20020a170903028300b001421243d879mr14657039plr.61.1636030525676; Thu, 04 Nov 2021 05:55:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzRFHr+8XmJC1gxOYGq4ici/MsJ9db5KqYPwxuyIUDXhqtsnoPgN4nAYWIx1EgJjfhy3DTVnA== X-Received: by 2002:a17:903:283:b0:142:1243:d879 with SMTP id j3-20020a170903028300b001421243d879mr14657013plr.61.1636030525341; Thu, 04 Nov 2021 05:55:25 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:24 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 17/41] drivers: hv: Create a consistent pattern for checking Hyper-V hypercall status Date: Thu, 4 Nov 2021 06:54:25 -0600 Message-Id: <20211104125449.16540-18-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Joseph Salisbury BugLink: https://bugs.launchpad.net/bugs/1949770 There is not a consistent pattern for checking Hyper-V hypercall status. Existing code uses a number of variants. The variants work, but a consistent pattern would improve the readability of the code, and be more conformant to what the Hyper-V TLFS says about hypercall status. Implemented new helper functions hv_result(), hv_result_success(), and hv_repcomp(). Changed the places where hv_do_hypercall() and related variants are used to use the helper functions. Signed-off-by: Joseph Salisbury Reviewed-by: Michael Kelley Link: https://lore.kernel.org/r/1618620183-9967-2-git-send-email-joseph.salisbury@linux.microsoft.com Signed-off-by: Wei Liu (back ported from commit 753ed9c95c37d058e50e7d42bbe296ee0bf6670d) [marcelo.cerri@canonical.com: dropped the non existing bits touched by the patch] Signed-off-by: Marcelo Henrique Cerri --- arch/x86/hyperv/hv_apic.c | 16 +++++++++------- arch/x86/hyperv/mmu.c | 8 ++++---- arch/x86/hyperv/nested.c | 8 ++++---- arch/x86/include/asm/mshyperv.h | 1 + drivers/hv/hv.c | 2 +- drivers/pci/controller/pci-hyperv.c | 2 +- include/asm-generic/mshyperv.h | 25 ++++++++++++++++++++----- 7 files changed, 40 insertions(+), 22 deletions(-) diff --git a/arch/x86/hyperv/hv_apic.c b/arch/x86/hyperv/hv_apic.c index 284e73661a18..ca581b24974a 100644 --- a/arch/x86/hyperv/hv_apic.c +++ b/arch/x86/hyperv/hv_apic.c @@ -103,7 +103,7 @@ static bool __send_ipi_mask_ex(const struct cpumask *mask, int vector) struct hv_send_ipi_ex *ipi_arg; unsigned long flags; int nr_bank = 0; - int ret = 1; + u64 status = HV_STATUS_INVALID_PARAMETER; if (!(ms_hyperv.hints & HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED)) return false; @@ -128,19 +128,19 @@ static bool __send_ipi_mask_ex(const struct cpumask *mask, int vector) if (!nr_bank) ipi_arg->vp_set.format = HV_GENERIC_SET_ALL; - ret = hv_do_rep_hypercall(HVCALL_SEND_IPI_EX, 0, nr_bank, + status = hv_do_rep_hypercall(HVCALL_SEND_IPI_EX, 0, nr_bank, ipi_arg, NULL); ipi_mask_ex_done: local_irq_restore(flags); - return ((ret == 0) ? true : false); + return hv_result_success(status); } static bool __send_ipi_mask(const struct cpumask *mask, int vector) { int cur_cpu, vcpu; struct hv_send_ipi ipi_arg; - int ret = 1; + u64 status; trace_hyperv_send_ipi_mask(mask, vector); @@ -184,9 +184,9 @@ static bool __send_ipi_mask(const struct cpumask *mask, int vector) __set_bit(vcpu, (unsigned long *)&ipi_arg.cpu_mask); } - ret = hv_do_fast_hypercall16(HVCALL_SEND_IPI, ipi_arg.vector, + status = hv_do_fast_hypercall16(HVCALL_SEND_IPI, ipi_arg.vector, ipi_arg.cpu_mask); - return ((ret == 0) ? true : false); + return hv_result_success(status); do_ex_hypercall: return __send_ipi_mask_ex(mask, vector); @@ -195,6 +195,7 @@ static bool __send_ipi_mask(const struct cpumask *mask, int vector) static bool __send_ipi_one(int cpu, int vector) { int vp = hv_cpu_number_to_vp_number(cpu); + u64 status; trace_hyperv_send_ipi_one(cpu, vector); @@ -207,7 +208,8 @@ static bool __send_ipi_one(int cpu, int vector) if (vp >= 64) return __send_ipi_mask_ex(cpumask_of(cpu), vector); - return !hv_do_fast_hypercall16(HVCALL_SEND_IPI, vector, BIT_ULL(vp)); + status = hv_do_fast_hypercall16(HVCALL_SEND_IPI, vector, BIT_ULL(vp)); + return hv_result_success(status); } static void hv_send_ipi(int cpu, int vector) diff --git a/arch/x86/hyperv/mmu.c b/arch/x86/hyperv/mmu.c index 2c87350c1fb0..c0ba8874d9cb 100644 --- a/arch/x86/hyperv/mmu.c +++ b/arch/x86/hyperv/mmu.c @@ -58,7 +58,7 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus, int cpu, vcpu, gva_n, max_gvas; struct hv_tlb_flush **flush_pcpu; struct hv_tlb_flush *flush; - u64 status = U64_MAX; + u64 status; unsigned long flags; trace_hyperv_mmu_flush_tlb_others(cpus, info); @@ -161,7 +161,7 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus, check_status: local_irq_restore(flags); - if (!(status & HV_HYPERCALL_RESULT_MASK)) + if (hv_result_success(status)) return; do_native: native_flush_tlb_others(cpus, info); @@ -176,7 +176,7 @@ static u64 hyperv_flush_tlb_others_ex(const struct cpumask *cpus, u64 status; if (!(ms_hyperv.hints & HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED)) - return U64_MAX; + return HV_STATUS_INVALID_PARAMETER; flush_pcpu = (struct hv_tlb_flush_ex **) this_cpu_ptr(hyperv_pcpu_input_arg); @@ -201,7 +201,7 @@ static u64 hyperv_flush_tlb_others_ex(const struct cpumask *cpus, flush->hv_vp_set.format = HV_GENERIC_SET_SPARSE_4K; nr_bank = cpumask_to_vpset(&(flush->hv_vp_set), cpus); if (nr_bank < 0) - return U64_MAX; + return HV_STATUS_INVALID_PARAMETER; /* * We can flush not more than max_gvas with one hypercall. Flush the diff --git a/arch/x86/hyperv/nested.c b/arch/x86/hyperv/nested.c index dd0a843f766d..5d70968c8538 100644 --- a/arch/x86/hyperv/nested.c +++ b/arch/x86/hyperv/nested.c @@ -47,7 +47,7 @@ int hyperv_flush_guest_mapping(u64 as) flush, NULL); local_irq_restore(flags); - if (!(status & HV_HYPERCALL_RESULT_MASK)) + if (hv_result_success(status)) ret = 0; fault: @@ -92,7 +92,7 @@ int hyperv_flush_guest_mapping_range(u64 as, { struct hv_guest_mapping_flush_list **flush_pcpu; struct hv_guest_mapping_flush_list *flush; - u64 status = 0; + u64 status; unsigned long flags; int ret = -ENOTSUPP; int gpa_n = 0; @@ -125,10 +125,10 @@ int hyperv_flush_guest_mapping_range(u64 as, local_irq_restore(flags); - if (!(status & HV_HYPERCALL_RESULT_MASK)) + if (hv_result_success(status)) ret = 0; else - ret = status; + ret = hv_result(status); fault: trace_hyperv_nested_flush_guest_mapping_range(as, ret); return ret; diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h index 7c3ff0d38e04..10cf34d33ddd 100644 --- a/arch/x86/include/asm/mshyperv.h +++ b/arch/x86/include/asm/mshyperv.h @@ -9,6 +9,7 @@ #include #include #include +#include typedef int (*hyperv_fill_flush_list_func)( struct hv_guest_mapping_flush_list *flush, diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c index 917b29e873c5..147abe31b540 100644 --- a/drivers/hv/hv.c +++ b/drivers/hv/hv.c @@ -105,7 +105,7 @@ int hv_post_message(union hv_connection_id connection_id, */ put_cpu_ptr(hv_cpu); - return status & 0xFFFF; + return hv_result(status); } int hv_synic_alloc(void) diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c index cd1572bc6c3e..089722630e4a 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) * resumes, hv_pci_restore_msi_state() is able to correctly restore * the interrupt with the correct affinity. */ - if (res && hbus->state != hv_pcibus_removing) + if (!hv_result_success(res) && hbus->state != hv_pcibus_removing) dev_err(&hbus->hdev->device, "%s() failed: %#llx", __func__, res); diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h index 7821d8180efe..f100baa6a33d 100644 --- a/include/asm-generic/mshyperv.h +++ b/include/asm-generic/mshyperv.h @@ -39,6 +39,24 @@ extern struct ms_hyperv_info ms_hyperv; extern u64 hv_do_hypercall(u64 control, void *inputaddr, void *outputaddr); extern u64 hv_do_fast_hypercall8(u16 control, u64 input8); +/* Helper functions that provide a consistent pattern for checking Hyper-V hypercall status. */ +static inline int hv_result(u64 status) +{ + return status & HV_HYPERCALL_RESULT_MASK; +} + +static inline bool hv_result_success(u64 status) +{ + return hv_result(status) == HV_STATUS_SUCCESS; +} + +static inline unsigned int hv_repcomp(u64 status) +{ + /* Bits [43:32] of status have 'Reps completed' data. */ + return (status & HV_HYPERCALL_REP_COMP_MASK) >> + HV_HYPERCALL_REP_COMP_OFFSET; +} + /* * Rep hypercalls. Callers of this functions are supposed to ensure that * rep_count and varhead_size comply with Hyper-V hypercall definition. @@ -55,12 +73,10 @@ static inline u64 hv_do_rep_hypercall(u16 code, u16 rep_count, u16 varhead_size, do { status = hv_do_hypercall(control, input, output); - if ((status & HV_HYPERCALL_RESULT_MASK) != HV_STATUS_SUCCESS) + if (!hv_result_success(status)) return status; - /* Bits 32-43 of status have 'Reps completed' data. */ - rep_comp = (status & HV_HYPERCALL_REP_COMP_MASK) >> - HV_HYPERCALL_REP_COMP_OFFSET; + rep_comp = hv_repcomp(status); control &= ~HV_HYPERCALL_REP_START_MASK; control |= (u64)rep_comp << HV_HYPERCALL_REP_START_OFFSET; @@ -85,7 +101,6 @@ static inline __u64 generate_guest_id(__u64 d_info1, __u64 kernel_version, return guest_id; } - /* Free the message slot and signal end-of-message if required */ static inline void vmbus_signal_eom(struct hv_message *msg, u32 old_msg_type) { From patchwork Thu Nov 4 12:54:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550912 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=KHMIDMoo; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNts4YRTz9sP7 for ; Thu, 4 Nov 2021 23:56:37 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micI8-00067z-MP; Thu, 04 Nov 2021 12:56:28 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHC-0004bc-Fg for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:30 +0000 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 6C1993F1F6 for ; Thu, 4 Nov 2021 12:55:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030528; bh=6bU2X7LRAio8m7lkC3BmM914RlckZTiOrEUxvXZC+CA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=KHMIDMoo3p+SSCKQxcih7ln3BNy5CkIL8afd2lauEkopPIp3DH9L9DGt8fO7bB2sY hAD7jX0psMahK35BOamCMZMedH0MczvVFCN2Io0KpCE/nB/WUoBY42MnfmJ2Kw+A1K M+SntkKdrXyPFUYY9UyXtoohB2KGJP67kfkMSiUlsihuCUSG1+secRsvdCNc6ahOgA 245YxzftW+ELqCgOP7o6EzCsZ+NNeCs2jnJMoHdYYtWa5uCFKvSLFWnbZfAr++VZYq V8xUlahRdId/tPp+hhPqQpiRWMqOeIpVW+B+RqB98aYeuJza1d2epYQz4mv4Ram+6m HsMSwxw1ks2ew== Received: by mail-pf1-f200.google.com with SMTP id g142-20020a625294000000b004946d789d14so758626pfb.3 for ; Thu, 04 Nov 2021 05:55:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6bU2X7LRAio8m7lkC3BmM914RlckZTiOrEUxvXZC+CA=; b=B6F+qBVpS8xcNi2SZnVBMWpx1Jx7SPBldaqcIcACh9WwXG/PEVusLOcZQo1iwwoMUg HTbB8EP/tDxH/55qUKLnc1uXk/foszu0+9DbSUY0KXxtkfF2l/viRZvno5riV2IeDgG7 AjkPBGh/gxBh63Lldq5XnD/kgrtQITUl4xJ9pC9lnwH5OQIeiw4zTmgzwinWUKiYqHdp d4bpHY2cKseKEhZrcGev5jF96kW7xw//uw+Ikb1Tfzsvn3vNHq5olLeAVKQd4xIJRK7r Q75xRIZdZgH6z9I2xGIBiilNPRMdrCr6ZownA71mqEcTLdWelHA0EjtoqaMyvwtCuD48 hpag== X-Gm-Message-State: AOAM533rabzIWYU4RVo9JHX/HFNsay7UQ0EMvy59gc7KviwKh9CVxI/u ugmXBSqkMc3a10i0FefAVihZjc1e1Jyexb3denmLlRIpP3MEdPsZr1QsavDC6BCLFbh18uTMk+l A3qgoc5X32YnRMjjwmPwH8J9ODUAXrH5/fQhnpd5Lkw== X-Received: by 2002:a17:902:8f8a:b0:13f:9c2c:de84 with SMTP id z10-20020a1709028f8a00b0013f9c2cde84mr44836180plo.66.1636030526470; Thu, 04 Nov 2021 05:55:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxDN++nzVBByeKaOcN4WaCi1lmURYQEDpZV1HXJFDfmNE7nwPbTEo3u4d0BLyjkYEXMK8qj+A== X-Received: by 2002:a17:902:8f8a:b0:13f:9c2c:de84 with SMTP id z10-20020a1709028f8a00b0013f9c2cde84mr44836155plo.66.1636030526121; Thu, 04 Nov 2021 05:55:26 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:25 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 18/41] arm64: smccc: Add support for SMCCCv1.2 extended input/output registers Date: Thu, 4 Nov 2021 06:54:26 -0600 Message-Id: <20211104125449.16540-19-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Sudeep Holla BugLink: https://bugs.launchpad.net/bugs/1949770 SMCCC v1.2 allows x8-x17 to be used as parameter registers and x4—x17 to be used as result registers in SMC64/HVC64. Arm Firmware Framework for Armv8-A specification makes use of x0-x7 as parameter and result registers. There are other users like Hyper-V who intend to use beyond x0-x7 as well. Current SMCCC interface in the kernel just use x0-x7 as parameter and x0-x3 as result registers as required by SMCCCv1.0. Let us add new interface to support this extended set of input/output registers namely x0-x17 as both parameter and result registers. Acked-by: Mark Rutland Tested-by: Michael Kelley Reviewed-by: Michael Kelley Cc: Will Deacon Cc: Catalin Marinas Signed-off-by: Sudeep Holla Reviewed-by: Mark Brown Link: https://lore.kernel.org/r/20210518163618.43950-1-sudeep.holla@arm.com Signed-off-by: Will Deacon (cherry picked from commit 3fdc0cb59d97f87e2cc708d424f1538e31744286) Signed-off-by: Marcelo Henrique Cerri --- arch/arm64/kernel/asm-offsets.c | 9 ++++++ arch/arm64/kernel/smccc-call.S | 57 +++++++++++++++++++++++++++++++++ include/linux/arm-smccc.h | 55 +++++++++++++++++++++++++++++++ 3 files changed, 121 insertions(+) diff --git a/arch/arm64/kernel/asm-offsets.c b/arch/arm64/kernel/asm-offsets.c index 301784463587..7f12d457f6fb 100644 --- a/arch/arm64/kernel/asm-offsets.c +++ b/arch/arm64/kernel/asm-offsets.c @@ -129,6 +129,15 @@ int main(void) DEFINE(ARM_SMCCC_RES_X2_OFFS, offsetof(struct arm_smccc_res, a2)); DEFINE(ARM_SMCCC_QUIRK_ID_OFFS, offsetof(struct arm_smccc_quirk, id)); DEFINE(ARM_SMCCC_QUIRK_STATE_OFFS, offsetof(struct arm_smccc_quirk, state)); + DEFINE(ARM_SMCCC_1_2_REGS_X0_OFFS, offsetof(struct arm_smccc_1_2_regs, a0)); + DEFINE(ARM_SMCCC_1_2_REGS_X2_OFFS, offsetof(struct arm_smccc_1_2_regs, a2)); + DEFINE(ARM_SMCCC_1_2_REGS_X4_OFFS, offsetof(struct arm_smccc_1_2_regs, a4)); + DEFINE(ARM_SMCCC_1_2_REGS_X6_OFFS, offsetof(struct arm_smccc_1_2_regs, a6)); + DEFINE(ARM_SMCCC_1_2_REGS_X8_OFFS, offsetof(struct arm_smccc_1_2_regs, a8)); + DEFINE(ARM_SMCCC_1_2_REGS_X10_OFFS, offsetof(struct arm_smccc_1_2_regs, a10)); + DEFINE(ARM_SMCCC_1_2_REGS_X12_OFFS, offsetof(struct arm_smccc_1_2_regs, a12)); + DEFINE(ARM_SMCCC_1_2_REGS_X14_OFFS, offsetof(struct arm_smccc_1_2_regs, a14)); + DEFINE(ARM_SMCCC_1_2_REGS_X16_OFFS, offsetof(struct arm_smccc_1_2_regs, a16)); BLANK(); DEFINE(HIBERN_PBE_ORIG, offsetof(struct pbe, orig_address)); DEFINE(HIBERN_PBE_ADDR, offsetof(struct pbe, address)); diff --git a/arch/arm64/kernel/smccc-call.S b/arch/arm64/kernel/smccc-call.S index d62447964ed9..2def9d0dd3dd 100644 --- a/arch/arm64/kernel/smccc-call.S +++ b/arch/arm64/kernel/smccc-call.S @@ -43,3 +43,60 @@ SYM_FUNC_START(__arm_smccc_hvc) SMCCC hvc SYM_FUNC_END(__arm_smccc_hvc) EXPORT_SYMBOL(__arm_smccc_hvc) + + .macro SMCCC_1_2 instr + /* Save `res` and free a GPR that won't be clobbered */ + stp x1, x19, [sp, #-16]! + + /* Ensure `args` won't be clobbered while loading regs in next step */ + mov x19, x0 + + /* Load the registers x0 - x17 from the struct arm_smccc_1_2_regs */ + ldp x0, x1, [x19, #ARM_SMCCC_1_2_REGS_X0_OFFS] + ldp x2, x3, [x19, #ARM_SMCCC_1_2_REGS_X2_OFFS] + ldp x4, x5, [x19, #ARM_SMCCC_1_2_REGS_X4_OFFS] + ldp x6, x7, [x19, #ARM_SMCCC_1_2_REGS_X6_OFFS] + ldp x8, x9, [x19, #ARM_SMCCC_1_2_REGS_X8_OFFS] + ldp x10, x11, [x19, #ARM_SMCCC_1_2_REGS_X10_OFFS] + ldp x12, x13, [x19, #ARM_SMCCC_1_2_REGS_X12_OFFS] + ldp x14, x15, [x19, #ARM_SMCCC_1_2_REGS_X14_OFFS] + ldp x16, x17, [x19, #ARM_SMCCC_1_2_REGS_X16_OFFS] + + \instr #0 + + /* Load the `res` from the stack */ + ldr x19, [sp] + + /* Store the registers x0 - x17 into the result structure */ + stp x0, x1, [x19, #ARM_SMCCC_1_2_REGS_X0_OFFS] + stp x2, x3, [x19, #ARM_SMCCC_1_2_REGS_X2_OFFS] + stp x4, x5, [x19, #ARM_SMCCC_1_2_REGS_X4_OFFS] + stp x6, x7, [x19, #ARM_SMCCC_1_2_REGS_X6_OFFS] + stp x8, x9, [x19, #ARM_SMCCC_1_2_REGS_X8_OFFS] + stp x10, x11, [x19, #ARM_SMCCC_1_2_REGS_X10_OFFS] + stp x12, x13, [x19, #ARM_SMCCC_1_2_REGS_X12_OFFS] + stp x14, x15, [x19, #ARM_SMCCC_1_2_REGS_X14_OFFS] + stp x16, x17, [x19, #ARM_SMCCC_1_2_REGS_X16_OFFS] + + /* Restore original x19 */ + ldp xzr, x19, [sp], #16 + ret +.endm + +/* + * void arm_smccc_1_2_hvc(const struct arm_smccc_1_2_regs *args, + * struct arm_smccc_1_2_regs *res); + */ +SYM_FUNC_START(arm_smccc_1_2_hvc) + SMCCC_1_2 hvc +SYM_FUNC_END(arm_smccc_1_2_hvc) +EXPORT_SYMBOL(arm_smccc_1_2_hvc) + +/* + * void arm_smccc_1_2_smc(const struct arm_smccc_1_2_regs *args, + * struct arm_smccc_1_2_regs *res); + */ +SYM_FUNC_START(arm_smccc_1_2_smc) + SMCCC_1_2 smc +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 --- a/include/linux/arm-smccc.h +++ b/include/linux/arm-smccc.h @@ -155,6 +155,61 @@ struct arm_smccc_res { unsigned long a3; }; +#ifdef CONFIG_ARM64 +/** + * struct arm_smccc_1_2_regs - Arguments for or Results from SMC/HVC call + * @a0-a17 argument values from registers 0 to 17 + */ +struct arm_smccc_1_2_regs { + unsigned long a0; + unsigned long a1; + unsigned long a2; + unsigned long a3; + unsigned long a4; + unsigned long a5; + unsigned long a6; + unsigned long a7; + unsigned long a8; + unsigned long a9; + unsigned long a10; + unsigned long a11; + unsigned long a12; + unsigned long a13; + unsigned long a14; + unsigned long a15; + unsigned long a16; + unsigned long a17; +}; + +/** + * arm_smccc_1_2_hvc() - make HVC calls + * @args: arguments passed via struct arm_smccc_1_2_regs + * @res: result values via struct arm_smccc_1_2_regs + * + * This function is used to make HVC calls following SMC Calling Convention + * v1.2 or above. The content of the supplied param are copied from the + * structure to registers prior to the HVC instruction. The return values + * are updated with the content from registers on return from the HVC + * instruction. + */ +asmlinkage void arm_smccc_1_2_hvc(const struct arm_smccc_1_2_regs *args, + struct arm_smccc_1_2_regs *res); + +/** + * arm_smccc_1_2_smc() - make SMC calls + * @args: arguments passed via struct arm_smccc_1_2_regs + * @res: result values via struct arm_smccc_1_2_regs + * + * This function is used to make SMC calls following SMC Calling Convention + * v1.2 or above. The content of the supplied param are copied from the + * structure to registers prior to the SMC instruction. The return values + * are updated with the content from registers on return from the SMC + * instruction. + */ +asmlinkage void arm_smccc_1_2_smc(const struct arm_smccc_1_2_regs *args, + struct arm_smccc_1_2_regs *res); +#endif + /** * struct arm_smccc_quirk - Contains quirk information * @id: quirk identification From patchwork Thu Nov 4 12:54:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550910 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=dxjuZaiS; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNtl5hD1z9sP7 for ; Thu, 4 Nov 2021 23:56:31 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micI0-0005k6-4I; Thu, 04 Nov 2021 12:56:20 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHD-0004c8-2t for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:31 +0000 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 15EE53F1C7 for ; Thu, 4 Nov 2021 12:55:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030529; bh=Ovuqgmqqw5/Afm7s9mV8jJOEWaKWaKzzHMrY2FUIpd0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dxjuZaiSR11sjJF2v9iT1I/mrUxEZAUm7MG/qeBW2ImomOZxnRn2QcegNyuemeWuj /GiafshJy3kRcLTUN3u8dKd0SRIjb2zfml/zcBpLpVS6baODB7msLeAQ+N7l6Ajnoe tExy9p+7FufymsJeIprYeaDQGNHqiKC7rfOd0iy5ZYAGf9sQmSQtGbl08nfCCGT5Li IGvZGUZfBMelSDvY2ORt8YPcObq+UANDcju5FOfeyU/q6NBxTuaW9GqeqLrj60kgSF Ptr3LecTkhpx0XRJNlP6PkdGH7o9gvOCJrDXXXtBISOAk3eMtefkSuaYDb5k2fMmM4 MGkhG7Bpry0Ug== Received: by mail-pl1-f199.google.com with SMTP id o6-20020a170902778600b0013c8ce59005so3178650pll.2 for ; Thu, 04 Nov 2021 05:55:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Ovuqgmqqw5/Afm7s9mV8jJOEWaKWaKzzHMrY2FUIpd0=; b=pHDqU3wDo3Wujj4ARVus4jnTSiuZ5krfc8JQcG1mT+fjWgQ/9Ph53gVQcnRT6tJqxo 3BnO+O6saGOcwf/FUDuVTw199K55oIwEUxyAgI3KXA7SKUse+XHVGPtMPCFVBVhDZu1J W47PMGMhJo6HpO9ZL9SjuDVNkB84N23riaD9xn/ezwtuhZUnhp2APtP+NFJnrliSNypl E16AKVPYS8YYDC12WwvWoi1eBPehKi9LCIv5o2nfI1tKn0c2AJQeDb02NbgkPqXsxmy0 hX9SwHyos2Oojc9Pc3XBqYd5q+UrKal4nFzXAIBY82qzbAxu5h13vVA9kqThAFtY/nEk ts5Q== X-Gm-Message-State: AOAM533zPmsmrv+2h2d4TIwD+MtWUMG73VOnFATpzprXmL2xCTHMFEFa XSNfAIEXSylUDR0Yq3yZjSMJoDxU3LIJsh+Z0+QaO0IwsltAj5oapTaq8TT/PVwQxW/xIgYRAp/ rNfj84HjlPCdQW47q2g9ibPBi4XDuhvUktmeEjPCYDA== X-Received: by 2002:a17:902:e302:b0:141:af98:b5ea with SMTP id q2-20020a170902e30200b00141af98b5eamr37547381plc.53.1636030527235; Thu, 04 Nov 2021 05:55:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwp6iqWfRWoNYA3xzI139BizUZpQAN3r5ngkyjj10onP/4R4T/qONOdiVkIFPVeZY3bLPjRJA== X-Received: by 2002:a17:902:e302:b0:141:af98:b5ea with SMTP id q2-20020a170902e30200b00141af98b5eamr37547359plc.53.1636030526947; Thu, 04 Nov 2021 05:55:26 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:26 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 19/41] Drivers: hv: Move Hyper-V extended capability check to arch neutral code Date: Thu, 4 Nov 2021 06:54:27 -0600 Message-Id: <20211104125449.16540-20-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 The extended capability query code is currently under arch/x86, but it is architecture neutral, and is used by arch neutral code in the Hyper-V balloon driver. Hence the balloon driver fails to build on other architectures. Fix by moving the ext cap code out from arch/x86. Because it is also called from built-in architecture specific code, it can't be in a module, so the Makefile treats as built-in even when CONFIG_HYPERV is "m". Also drivers/Makefile is tweaked because this is the first occurrence of a Hyper-V file that is built-in even when CONFIG_HYPERV is "m". While here, update the hypercall status check to use the new helper function instead of open coding. No functional change. Signed-off-by: Michael Kelley Reviewed-by: Sunil Muthuswamy Link: https://lore.kernel.org/r/1622669804-2016-1-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (back ported from commit a4d7e8ae4a541557d7a2c815835b786c18c3613c) [marcelo.cerri@canonical.com: adjust context due to the lack of the patches for VM isolation] Signed-off-by: Marcelo Henrique Cerri --- arch/x86/hyperv/hv_init.c | 47 ---------------------------- drivers/Makefile | 2 +- drivers/hv/Makefile | 3 ++ drivers/hv/hv_common.c | 66 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 48 deletions(-) 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 11b44b0db32a..b952e7d38459 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -517,50 +517,3 @@ bool hv_is_hibernation_supported(void) return acpi_sleep_state_supported(ACPI_STATE_S4); } EXPORT_SYMBOL_GPL(hv_is_hibernation_supported); - -/* Bit mask of the extended capability to query: see HV_EXT_CAPABILITY_xxx */ -bool hv_query_ext_cap(u64 cap_query) -{ - /* - * The address of the 'hv_extended_cap' variable will be used as an - * output parameter to the hypercall below and so it should be - * compatible with 'virt_to_phys'. Which means, it's address should be - * directly mapped. Use 'static' to keep it compatible; stack variables - * can be virtually mapped, making them imcompatible with - * 'virt_to_phys'. - * Hypercall input/output addresses should also be 8-byte aligned. - */ - static u64 hv_extended_cap __aligned(8); - static bool hv_extended_cap_queried; - u64 status; - - /* - * Querying extended capabilities is an extended hypercall. Check if the - * partition supports extended hypercall, first. - */ - if (!(ms_hyperv.priv_high & HV_ENABLE_EXTENDED_HYPERCALLS)) - return false; - - /* Extended capabilities do not change at runtime. */ - if (hv_extended_cap_queried) - return hv_extended_cap & cap_query; - - status = hv_do_hypercall(HV_EXT_CALL_QUERY_CAPABILITIES, NULL, - &hv_extended_cap); - - /* - * The query extended capabilities hypercall should not fail under - * any normal circumstances. Avoid repeatedly making the hypercall, on - * error. - */ - hv_extended_cap_queried = true; - status &= HV_HYPERCALL_RESULT_MASK; - if (status != HV_STATUS_SUCCESS) { - pr_err("Hyper-V: Extended query capabilities hypercall failed 0x%llx\n", - status); - return false; - } - - return hv_extended_cap & cap_query; -} -EXPORT_SYMBOL_GPL(hv_query_ext_cap); diff --git a/drivers/Makefile b/drivers/Makefile index 54b9b27d79b9..168c16a47cbc 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -159,7 +159,7 @@ obj-$(CONFIG_SOUNDWIRE) += soundwire/ # Virtualization drivers obj-$(CONFIG_VIRT_DRIVERS) += virt/ -obj-$(CONFIG_HYPERV) += hv/ +obj-$(subst m,y,$(CONFIG_HYPERV)) += hv/ obj-$(CONFIG_PM_DEVFREQ) += devfreq/ obj-$(CONFIG_EXTCON) += extcon/ diff --git a/drivers/hv/Makefile b/drivers/hv/Makefile index 94daf8240c95..d76df5c8c2a9 100644 --- a/drivers/hv/Makefile +++ b/drivers/hv/Makefile @@ -11,3 +11,6 @@ hv_vmbus-y := vmbus_drv.o \ channel_mgmt.o ring_buffer.o hv_trace.o hv_vmbus-$(CONFIG_HYPERV_TESTING) += hv_debugfs.o hv_utils-y := hv_util.o hv_kvp.o hv_snapshot.o hv_fcopy.o hv_utils_transport.o + +# Code that must be built-in +obj-$(subst m,y,$(CONFIG_HYPERV)) += hv_common.o diff --git a/drivers/hv/hv_common.c b/drivers/hv/hv_common.c new file mode 100644 index 000000000000..f0053c786891 --- /dev/null +++ b/drivers/hv/hv_common.c @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* + * Architecture neutral utility routines for interacting with + * Hyper-V. This file is specifically for code that must be + * built-in to the kernel image when CONFIG_HYPERV is set + * (vs. being in a module) because it is called from architecture + * specific code under arch/. + * + * Copyright (C) 2021, Microsoft, Inc. + * + * Author : Michael Kelley + */ + +#include +#include +#include +#include +#include + + +/* Bit mask of the extended capability to query: see HV_EXT_CAPABILITY_xxx */ +bool hv_query_ext_cap(u64 cap_query) +{ + /* + * The address of the 'hv_extended_cap' variable will be used as an + * output parameter to the hypercall below and so it should be + * compatible with 'virt_to_phys'. Which means, it's address should be + * directly mapped. Use 'static' to keep it compatible; stack variables + * can be virtually mapped, making them imcompatible with + * 'virt_to_phys'. + * Hypercall input/output addresses should also be 8-byte aligned. + */ + static u64 hv_extended_cap __aligned(8); + static bool hv_extended_cap_queried; + u64 status; + + /* + * Querying extended capabilities is an extended hypercall. Check if the + * partition supports extended hypercall, first. + */ + if (!(ms_hyperv.priv_high & HV_ENABLE_EXTENDED_HYPERCALLS)) + return false; + + /* Extended capabilities do not change at runtime. */ + if (hv_extended_cap_queried) + return hv_extended_cap & cap_query; + + status = hv_do_hypercall(HV_EXT_CALL_QUERY_CAPABILITIES, NULL, + &hv_extended_cap); + + /* + * The query extended capabilities hypercall should not fail under + * any normal circumstances. Avoid repeatedly making the hypercall, on + * error. + */ + hv_extended_cap_queried = true; + if (!hv_result_success(status)) { + pr_err("Hyper-V: Extended query capabilities hypercall failed 0x%llx\n", + status); + return false; + } + + return hv_extended_cap & cap_query; +} +EXPORT_SYMBOL_GPL(hv_query_ext_cap); From patchwork Thu Nov 4 12:54:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550913 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=f96mPk2z; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNtt6Bgpz9sPf for ; Thu, 4 Nov 2021 23:56:38 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIB-0006IB-Eb; Thu, 04 Nov 2021 12:56:31 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHE-0004eI-KT for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:32 +0000 Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id AA3173F1D0 for ; Thu, 4 Nov 2021 12:55:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030529; bh=yzDS46gOJ/SG43WRVs9oOgz8h7VjnjyVU/l3c1yLygU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=f96mPk2zz2ijxoZJJLeJsMLyAVt/cPej+SvOfB3H9Say3nFPz0fgyorBjDC53eiLl 1MZ0JfOKGoGRg+qYEGifDxx/RDp6CBuBrid7AslDRJn8dETqfNaZKJ0eudQBBr88Ph wNrkNiyqSG9fJx22alHn35igyfpA7V6aJKreLNXtrLHkYDtK8hAT95kxw3IyV+cZqO sTw+H9mLjH4jYGJPOEjV9qh7uxNsEL9V0loZQSFv8Cp6u/TfUOCPbaWN2A7qCJRyBe WBx41aO6KC3qSF+M1uEGpGd4talfYloBDpgWTXWhdOGTjig0NwbayzP877Vs8Lr5ZM vN/ouA+9DI4XA== Received: by mail-pl1-f197.google.com with SMTP id h2-20020a170902f54200b001422a32c821so1999713plf.13 for ; Thu, 04 Nov 2021 05:55:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=yzDS46gOJ/SG43WRVs9oOgz8h7VjnjyVU/l3c1yLygU=; b=tNMA1laVatkj1hufC4b3vdHaShXGE/kMACBWPSomqkjf/zJVZNl3xe5UiAWgUQgIeh 9qCH51ZnqQiCFieJP02blNSQ6bQKIwhYCn7bqtc/7hH/AVd0p7Zp0rzIUIVf8QYHSCTO RzDrOGbtInGvxK9CIAmq9iUmlzo8ZpzBejOfjDA0zXeoekajmHmH0lQhUHX+sSsz3HyC /hfilIHDNnuyR9O4DWXBQ7Sq8TDazHsahZptyr3Z+BnqOe50jzU5PC6VuJS1WmlI2JtA DNpG9wv8bQpzejmI0ZlavNGp26noTWosHWITLj1JhU8MkCqsZyMYsTSCS58kh2NWuTyw XlXQ== X-Gm-Message-State: AOAM532Q142Ze4mJhGpc1rpCeR83GvWxTc1fZouUxhymZpdvCZlb7+Yd /jhTUz+mxhAJF4ENUtY4H2+lH0OwweA9EZ8NLnSJ8w4YMKO7xJPTjWxZTSVHeRpBvwkZdPT+zMW d+kt63JmuMI/ebP6xsIIT4hGsnvqj4C4TTLjcEPjLTQ== X-Received: by 2002:a17:902:ce8c:b0:141:d411:7e25 with SMTP id f12-20020a170902ce8c00b00141d4117e25mr30346905plg.85.1636030528004; Thu, 04 Nov 2021 05:55:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxybVCWsl8Sv31fR9e6dRzIL0zCtYmnk93R4eGRcxo8NkkJvVLgYTbht73AewarONgmr+XjwQ== X-Received: by 2002:a17:902:ce8c:b0:141:d411:7e25 with SMTP id f12-20020a170902ce8c00b00141d4117e25mr30346891plg.85.1636030527777; Thu, 04 Nov 2021 05:55:27 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:27 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 20/41] UBUNTU: SAUCE: asm-generic: hyperv: Fix incorrect architecture dependencies Date: Thu, 4 Nov 2021 06:54:28 -0600 Message-Id: <20211104125449.16540-21-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 Move the declaration of hv_root_partition and hyperv_pcpu_input_arg from the x86-specific mshyperv.h to the arch independent mshyperv.h since they are used by arch independent code. While here, add a missing #include needed to compile correctly on ARM64. Signed-off-by: Michael Kelley [marcelo.cerri@canonical.com: back ported from https://lore.kernel.org/linux-hyperv/1620841067-46606-2-git-send-email-mikelley@microsoft.com/] Signed-off-by: Marcelo Henrique Cerri --- arch/x86/include/asm/mshyperv.h | 3 --- include/asm-generic/mshyperv.h | 5 +++++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h index 10cf34d33ddd..c16cd567798d 100644 --- a/arch/x86/include/asm/mshyperv.h +++ b/arch/x86/include/asm/mshyperv.h @@ -36,7 +36,6 @@ void hyperv_vector_handler(struct pt_regs *regs); extern int hyperv_init_cpuhp; extern void *hv_hypercall_pg; -extern void __percpu **hyperv_pcpu_input_arg; static inline u64 hv_do_hypercall(u64 control, void *input, void *output) { @@ -163,8 +162,6 @@ int hyperv_fill_flush_guest_mapping_list( struct hv_guest_mapping_flush_list *flush, u64 start_gfn, u64 end_gfn); -extern bool hv_root_partition; - #ifdef CONFIG_X86_64 void hv_apic_init(void); void __init hv_init_spinlocks(void); diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h index f100baa6a33d..bd79b48cfe07 100644 --- a/include/asm-generic/mshyperv.h +++ b/include/asm-generic/mshyperv.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -147,6 +148,8 @@ void hv_remove_crash_handler(void); extern int vmbus_interrupt; extern int vmbus_irq; +extern bool hv_root_partition; + #if IS_ENABLED(CONFIG_HYPERV) /* * Hypervisor's notion of virtual processor ID is different from @@ -157,6 +160,8 @@ extern int vmbus_irq; extern u32 *hv_vp_index; extern u32 hv_max_vp_index; +extern void __percpu **hyperv_pcpu_input_arg; + /* Sentinel value for an uninitialized entry in hv_vp_index array */ #define VP_INVAL U32_MAX From patchwork Thu Nov 4 12:54:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550915 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=jamxAPx3; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNty6yFBz9sP7 for ; Thu, 4 Nov 2021 23:56:42 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIE-0006RH-Fk; Thu, 04 Nov 2021 12:56:34 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHG-0004g9-L6 for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:34 +0000 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 669CC3F1C2 for ; Thu, 4 Nov 2021 12:55:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030531; bh=pnehGEf7aQAYDzl/Ykvw1rjSjWr7Z0YjoVw1NBUyw90=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jamxAPx3fdpSWmvxyMhMhSauGQZOKp4UWg7mfw03EyJt7ExyU+uTduCILVtwsYJ0I 6tlasYB8LxxPiBFIKx7HzMqfN3VvGGJnpBrhYFvKT0GoZp/07HX57C0aopjBbBISEk I/fAYWalDhDpHMpw6QKPHk/m3dIc/XUeA3DZJnsMDisBamf0uxqB2/B12uSkHQvkW1 xeBvecYsWJAA3IK723bPavBU4xcykXSCtaOn4YDqzgxlgEWimjk7OAI/3W/PUj7q2z PkFQ0O87ufurJ96ifMOR8JFB+Aj0pv5xmjO6OLSZkXtJ6D5ReDuf/R3I4YnrFU4wYK HTUrWysQQej+w== Received: by mail-pl1-f199.google.com with SMTP id x5-20020a1709028ec500b0013a347b89e4so3173599plo.3 for ; Thu, 04 Nov 2021 05:55:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pnehGEf7aQAYDzl/Ykvw1rjSjWr7Z0YjoVw1NBUyw90=; b=s4L0QGwsHIWzIyx/CQjIu+3/pZEp3Zti8cWMsY2p4EUQVaXiI0PFNPheEU6UbWS7Ds zdE7h0GB85Fm+wN14SjyTQYp/Rxt8/cCzfi193vBfFg7QHJ7UzddhrcJvWbRBzOuQdxC ey3e94tzdotnoHQ+BVJkUFqiyUpW9VAP+MmW1/IT9vdEm4JGI0KsS0PneHUeb58858iR QlBZJEyAqwFd17Yi20Hk1erNlMadFmJBAa8IsIIqxNeLCKKI3g87T/lvKPfLhZtrp8Uf I669OxdMXBBZPQwZ58ft1Ogb5BXnlVZwkpgloc/gwolo/HOQ++LfGsxnb49yxqYofUwP YNVw== X-Gm-Message-State: AOAM531zO96eN3dHQTaUeLZiGw9nsHNmsyRTuevKZDjRoO45OK7SD4q2 10eXg41LXdSphauSQOSKWLYvIXWMgq+LIu1yQGrAa5YYidllrV2hXkIOd1u+bUhvd4zVVSO/yWb ARPU6mr1oAJPmHMuMITC6+CY1wCPQ1yHyMC63ROK8WA== X-Received: by 2002:a62:1d97:0:b0:494:717f:23e8 with SMTP id d145-20020a621d97000000b00494717f23e8mr763115pfd.42.1636030529216; Thu, 04 Nov 2021 05:55:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw3NKcuWHVqkTm6LLPs13ftEyIFgnlJXXApRvaGr61lOKp3xXxRvp0Sh1E++UFA1WRjT6iD1g== X-Received: by 2002:a62:1d97:0:b0:494:717f:23e8 with SMTP id d145-20020a621d97000000b00494717f23e8mr763084pfd.42.1636030528840; Thu, 04 Nov 2021 05:55:28 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:28 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 21/41] arm64: hyperv: Add Hyper-V hypercall and register access utilities Date: Thu, 4 Nov 2021 06:54:29 -0600 Message-Id: <20211104125449.16540-22-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 hyperv-tlfs.h defines Hyper-V interfaces from the Hyper-V Top Level Functional Spec (TLFS), and #includes the architecture-independent part of hyperv-tlfs.h in include/asm-generic. The published TLFS is distinctly oriented to x86/x64, so the ARM64-specific hyperv-tlfs.h includes information for ARM64 that is not yet formally published. The TLFS is available here: docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs mshyperv.h defines Linux-specific structures and routines for interacting with Hyper-V on ARM64, and #includes the architecture- independent part of mshyperv.h in include/asm-generic. Use these definitions to provide utility functions to make Hyper-V hypercalls and to get and set Hyper-V provided registers associated with a virtual processor. Signed-off-by: Michael Kelley Reviewed-by: Sunil Muthuswamy Acked-by: Marc Zyngier Acked-by: Mark Rutland Acked-by: Catalin Marinas Link: https://lore.kernel.org/r/1628092359-61351-2-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (cherry picked from commit 57d276bbbd322409bb6f7c6446187a29953f8ded) Signed-off-by: Tim Gardner --- MAINTAINERS | 3 + arch/arm64/Kbuild | 1 + arch/arm64/hyperv/Makefile | 2 + arch/arm64/hyperv/hv_core.c | 129 +++++++++++++++++++++++++++ arch/arm64/include/asm/hyperv-tlfs.h | 69 ++++++++++++++ arch/arm64/include/asm/mshyperv.h | 54 +++++++++++ 6 files changed, 258 insertions(+) create mode 100644 arch/arm64/hyperv/Makefile create mode 100644 arch/arm64/hyperv/hv_core.c create mode 100644 arch/arm64/include/asm/hyperv-tlfs.h create mode 100644 arch/arm64/include/asm/mshyperv.h diff --git a/MAINTAINERS b/MAINTAINERS index 9c683c721786..17fc43341db0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -8257,6 +8257,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 +F: arch/arm64/hyperv +F: arch/arm64/include/asm/hyperv-tlfs.h +F: arch/arm64/include/asm/mshyperv.h F: arch/x86/hyperv F: arch/x86/include/asm/hyperv-tlfs.h F: arch/x86/include/asm/mshyperv.h diff --git a/arch/arm64/Kbuild b/arch/arm64/Kbuild index d6465823b281..7a37608fed76 100644 --- a/arch/arm64/Kbuild +++ b/arch/arm64/Kbuild @@ -3,4 +3,5 @@ obj-y += kernel/ mm/ obj-$(CONFIG_NET) += net/ obj-$(CONFIG_KVM) += kvm/ obj-$(CONFIG_XEN) += xen/ +obj-$(subst m,y,$(CONFIG_HYPERV)) += hyperv/ obj-$(CONFIG_CRYPTO) += crypto/ diff --git a/arch/arm64/hyperv/Makefile b/arch/arm64/hyperv/Makefile new file mode 100644 index 000000000000..1697d30ff106 --- /dev/null +++ b/arch/arm64/hyperv/Makefile @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0 +obj-y := hv_core.o diff --git a/arch/arm64/hyperv/hv_core.c b/arch/arm64/hyperv/hv_core.c new file mode 100644 index 000000000000..4c5dc0f51b12 --- /dev/null +++ b/arch/arm64/hyperv/hv_core.c @@ -0,0 +1,129 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* + * Low level utility routines for interacting with Hyper-V. + * + * Copyright (C) 2021, Microsoft, Inc. + * + * Author : Michael Kelley + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * hv_do_hypercall- Invoke the specified hypercall + */ +u64 hv_do_hypercall(u64 control, void *input, void *output) +{ + struct arm_smccc_res res; + u64 input_address; + u64 output_address; + + input_address = input ? virt_to_phys(input) : 0; + output_address = output ? virt_to_phys(output) : 0; + + arm_smccc_1_1_hvc(HV_FUNC_ID, control, + input_address, output_address, &res); + return res.a0; +} +EXPORT_SYMBOL_GPL(hv_do_hypercall); + +/* + * hv_do_fast_hypercall8 -- Invoke the specified hypercall + * with arguments in registers instead of physical memory. + * Avoids the overhead of virt_to_phys for simple hypercalls. + */ + +u64 hv_do_fast_hypercall8(u16 code, u64 input) +{ + struct arm_smccc_res res; + u64 control; + + control = (u64)code | HV_HYPERCALL_FAST_BIT; + + arm_smccc_1_1_hvc(HV_FUNC_ID, control, input, &res); + return res.a0; +} +EXPORT_SYMBOL_GPL(hv_do_fast_hypercall8); + +/* + * Set a single VP register to a 64-bit value. + */ +void hv_set_vpreg(u32 msr, u64 value) +{ + struct arm_smccc_res res; + + arm_smccc_1_1_hvc(HV_FUNC_ID, + HVCALL_SET_VP_REGISTERS | HV_HYPERCALL_FAST_BIT | + HV_HYPERCALL_REP_COMP_1, + HV_PARTITION_ID_SELF, + HV_VP_INDEX_SELF, + msr, + 0, + value, + 0, + &res); + + /* + * Something is fundamentally broken in the hypervisor if + * setting a VP register fails. There's really no way to + * continue as a guest VM, so panic. + */ + BUG_ON(!hv_result_success(res.a0)); +} +EXPORT_SYMBOL_GPL(hv_set_vpreg); + +/* + * Get the value of a single VP register. One version + * returns just 64 bits and another returns the full 128 bits. + * The two versions are separate to avoid complicating the + * calling sequence for the more frequently used 64 bit version. + */ + +void hv_get_vpreg_128(u32 msr, struct hv_get_vp_registers_output *result) +{ + struct arm_smccc_1_2_regs args; + struct arm_smccc_1_2_regs res; + + args.a0 = HV_FUNC_ID; + args.a1 = HVCALL_GET_VP_REGISTERS | HV_HYPERCALL_FAST_BIT | + HV_HYPERCALL_REP_COMP_1; + args.a2 = HV_PARTITION_ID_SELF; + args.a3 = HV_VP_INDEX_SELF; + args.a4 = msr; + + /* + * Use the SMCCC 1.2 interface because the results are in registers + * beyond X0-X3. + */ + arm_smccc_1_2_hvc(&args, &res); + + /* + * Something is fundamentally broken in the hypervisor if + * getting a VP register fails. There's really no way to + * continue as a guest VM, so panic. + */ + BUG_ON(!hv_result_success(res.a0)); + + result->as64.low = res.a6; + result->as64.high = res.a7; +} +EXPORT_SYMBOL_GPL(hv_get_vpreg_128); + +u64 hv_get_vpreg(u32 msr) +{ + struct hv_get_vp_registers_output output; + + hv_get_vpreg_128(msr, &output); + + return output.as64.low; +} +EXPORT_SYMBOL_GPL(hv_get_vpreg); diff --git a/arch/arm64/include/asm/hyperv-tlfs.h b/arch/arm64/include/asm/hyperv-tlfs.h new file mode 100644 index 000000000000..4d964a7f02ee --- /dev/null +++ b/arch/arm64/include/asm/hyperv-tlfs.h @@ -0,0 +1,69 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +/* + * This file contains definitions from the Hyper-V Hypervisor Top-Level + * Functional Specification (TLFS): + * https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs + * + * Copyright (C) 2021, Microsoft, Inc. + * + * Author : Michael Kelley + */ + +#ifndef _ASM_HYPERV_TLFS_H +#define _ASM_HYPERV_TLFS_H + +#include + +/* + * All data structures defined in the TLFS that are shared between Hyper-V + * and a guest VM use Little Endian byte ordering. This matches the default + * byte ordering of Linux running on ARM64, so no special handling is required. + */ + +/* + * These Hyper-V registers provide information equivalent to the CPUID + * instruction on x86/x64. + */ +#define HV_REGISTER_HYPERVISOR_VERSION 0x00000100 /*CPUID 0x40000002 */ +#define HV_REGISTER_FEATURES 0x00000200 /*CPUID 0x40000003 */ +#define HV_REGISTER_ENLIGHTENMENTS 0x00000201 /*CPUID 0x40000004 */ + +/* + * Group C Features. See the asm-generic version of hyperv-tlfs.h + * for a description of Feature Groups. + */ + +/* Crash MSRs available */ +#define HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE BIT(8) + +/* STIMER direct mode is available */ +#define HV_STIMER_DIRECT_MODE_AVAILABLE BIT(13) + +/* + * Synthetic register definitions equivalent to MSRs on x86/x64 + */ +#define HV_REGISTER_CRASH_P0 0x00000210 +#define HV_REGISTER_CRASH_P1 0x00000211 +#define HV_REGISTER_CRASH_P2 0x00000212 +#define HV_REGISTER_CRASH_P3 0x00000213 +#define HV_REGISTER_CRASH_P4 0x00000214 +#define HV_REGISTER_CRASH_CTL 0x00000215 + +#define HV_REGISTER_GUEST_OSID 0x00090002 +#define HV_REGISTER_VP_INDEX 0x00090003 +#define HV_REGISTER_TIME_REF_COUNT 0x00090004 +#define HV_REGISTER_REFERENCE_TSC 0x00090017 + +#define HV_REGISTER_SINT0 0x000A0000 +#define HV_REGISTER_SCONTROL 0x000A0010 +#define HV_REGISTER_SIEFP 0x000A0012 +#define HV_REGISTER_SIMP 0x000A0013 +#define HV_REGISTER_EOM 0x000A0014 + +#define HV_REGISTER_STIMER0_CONFIG 0x000B0000 +#define HV_REGISTER_STIMER0_COUNT 0x000B0001 + +#include + +#endif diff --git a/arch/arm64/include/asm/mshyperv.h b/arch/arm64/include/asm/mshyperv.h new file mode 100644 index 000000000000..20070a847304 --- /dev/null +++ b/arch/arm64/include/asm/mshyperv.h @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +/* + * Linux-specific definitions for managing interactions with Microsoft's + * Hyper-V hypervisor. The definitions in this file are specific to + * the ARM64 architecture. See include/asm-generic/mshyperv.h for + * definitions are that architecture independent. + * + * Definitions that are specified in the Hyper-V Top Level Functional + * Spec (TLFS) should not go in this file, but should instead go in + * hyperv-tlfs.h. + * + * Copyright (C) 2021, Microsoft, Inc. + * + * Author : Michael Kelley + */ + +#ifndef _ASM_MSHYPERV_H +#define _ASM_MSHYPERV_H + +#include +#include +#include + +/* + * Declare calls to get and set Hyper-V VP register values on ARM64, which + * requires a hypercall. + */ + +void hv_set_vpreg(u32 reg, u64 value); +u64 hv_get_vpreg(u32 reg); +void hv_get_vpreg_128(u32 reg, struct hv_get_vp_registers_output *result); + +static inline void hv_set_register(unsigned int reg, u64 value) +{ + hv_set_vpreg(reg, value); +} + +static inline u64 hv_get_register(unsigned int reg) +{ + return hv_get_vpreg(reg); +} + +/* SMCCC hypercall parameters */ +#define HV_SMCCC_FUNC_NUMBER 1 +#define HV_FUNC_ID ARM_SMCCC_CALL_VAL( \ + ARM_SMCCC_STD_CALL, \ + ARM_SMCCC_SMC_64, \ + ARM_SMCCC_OWNER_VENDOR_HYP, \ + HV_SMCCC_FUNC_NUMBER) + +#include + +#endif From patchwork Thu Nov 4 12:54:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550914 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=gR8B3pPI; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNtx2THnz9sP7 for ; Thu, 4 Nov 2021 23:56:41 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIC-0006Lq-Ox; Thu, 04 Nov 2021 12:56:32 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHH-0004gU-4J for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:35 +0000 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 627043F1C7 for ; Thu, 4 Nov 2021 12:55:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030532; bh=ufwB+/f1pUa2uQIJgYclaURci0wAdYSV4zvEdjKOEg0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gR8B3pPI+oGSNhb9tEoZzFRMrlMf/+DJp4P2m8R2rL3Pex6FsaZpQyhi1BH6y+ygg 6KOkqlIxLo/QSOEaSQUlbhm/wLBPmlURedXw7HYM0afYPLfk+hyriKRUUBvXoZAwMj itt0QcjikS+xjHSjSIZTLOIUVw5wGRdqg+8vK1qx+75ckUVeRwUYRMDOtL+qQpx1iq t8Nct7Euz3gob99rjRSqUTcxOg9dHlxybpJ2Pempw58sedgzcwGYrvocIBkFEdPlMo oI+29zecej9vhzp8BGyWECH+dpfhi72nW4AWx7cBrPCJc8ZqjCSRuFXw6arW6Mn0gs 307q1VMX3tq8A== Received: by mail-pg1-f197.google.com with SMTP id e6-20020a637446000000b002993ba24bbaso3652021pgn.12 for ; Thu, 04 Nov 2021 05:55:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ufwB+/f1pUa2uQIJgYclaURci0wAdYSV4zvEdjKOEg0=; b=RFulZrm3LiHYHY4w7Nky4fj+akg4NwE2mcIeD06ZN2O1yr4N5a6IuT+8WrgUYgcasz 41LQtaF11UBJfiXJSuDZmOrBcMBoThGk0U+zsc+d7kIBXgHecjMUJUJQOn8tJno9HQ/k PzsX4dIMnTpoCAxVnI0qcNl8gX3tgMGLrHse0sI1p0CvNoWVh+Q37NqLCXNpIgL8i0wm mCCwvbnq7Ns/BuSnl6WsyU5EoSNYfNkvUk+YoudrJZwBT/T9LeRS74P7m+mUToFpaPWT g1SBP4WxSKdTWYwk0nN9VCod2JPLq6IWIUda0PQgISpbwBxeJJ/K+j/AWabeifnjYAVB 3ORA== X-Gm-Message-State: AOAM533d2vxv02qvLpS6BtXZu6Bu8XipEdaaLH7QtPGUD95mu+lt9GOM Qna4JuPhnwe0iOZW4RX6EyfQj5zH5LHoyGdaHLqM27YQwyki1aZ3HDc28f3pripJ0tCMITysHXp 2FuiN5NNOlb9TVfU8wRfhm3rnf6ykm8k1Lm356O2PoQ== X-Received: by 2002:a05:6a00:1995:b0:47c:1f59:a27a with SMTP id d21-20020a056a00199500b0047c1f59a27amr52052275pfl.36.1636030529940; Thu, 04 Nov 2021 05:55:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwci4qAxo+fP/xC/IPaULOJx3O9p7n4uQFgmf2nSxQgCQuAKcllFxe9b4pEXiboaenvGxGMoQ== X-Received: by 2002:a05:6a00:1995:b0:47c:1f59:a27a with SMTP id d21-20020a056a00199500b0047c1f59a27amr52052248pfl.36.1636030529683; Thu, 04 Nov 2021 05:55:29 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:29 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 22/41] UBUNTU: SAUCE: arm64: hyperv: Add Hyper-V clocksource/clockevent support Date: Thu, 4 Nov 2021 06:54:30 -0600 Message-Id: <20211104125449.16540-23-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 Add architecture specific definitions and functions needed by the architecture independent Hyper-V clocksource driver. Update the Hyper-V clocksource driver to be initialized on ARM64. Signed-off-by: Michael Kelley Reviewed-by: Sunil Muthuswamy [marcelo.cerri@canonical.com: back ported from https://lore.kernel.org/linux-hyperv/1620841067-46606-4-git-send-email-mikelley@microsoft.com/] Signed-off-by: Marcelo Henrique Cerri --- arch/arm64/include/asm/mshyperv.h | 12 ++++++++++++ drivers/clocksource/hyperv_timer.c | 14 ++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/arch/arm64/include/asm/mshyperv.h b/arch/arm64/include/asm/mshyperv.h index 20070a847304..e1486bf02599 100644 --- a/arch/arm64/include/asm/mshyperv.h +++ b/arch/arm64/include/asm/mshyperv.h @@ -21,6 +21,7 @@ #include #include #include +#include /* * Declare calls to get and set Hyper-V VP register values on ARM64, which @@ -41,6 +42,17 @@ static inline u64 hv_get_register(unsigned int reg) return hv_get_vpreg(reg); } +/* Define the interrupt ID used by STIMER0 Direct Mode interrupts. This + * value can't come from ACPI tables because it is needed before the + * Linux ACPI subsystem is initialized. + */ +#define HYPERV_STIMER0_VECTOR 31 + +static inline u64 hv_get_raw_timer(void) +{ + return arch_timer_read_counter(); +} + /* SMCCC hypercall parameters */ #define HV_SMCCC_FUNC_NUMBER 1 #define HV_FUNC_ID ARM_SMCCC_CALL_VAL( \ diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c index ce94f78eb851..d1510d43211b 100644 --- a/drivers/clocksource/hyperv_timer.c +++ b/drivers/clocksource/hyperv_timer.c @@ -569,3 +569,17 @@ void __init hv_init_clocksource(void) hv_setup_sched_clock(read_hv_sched_clock_msr); } EXPORT_SYMBOL_GPL(hv_init_clocksource); + +/* Initialize everything on ARM64 */ +static int __init hyperv_timer_init(struct acpi_table_header *table) +{ + if (!hv_is_hyperv_initialized()) + return -EINVAL; + + hv_init_clocksource(); + if (hv_stimer_alloc(true)) + return -EINVAL; + + return 0; +} +TIMER_ACPI_DECLARE(hyperv, ACPI_SIG_GTDT, hyperv_timer_init); From patchwork Thu Nov 4 12:54:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550916 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=bzrRfULF; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNv11GKlz9sP7 for ; Thu, 4 Nov 2021 23:56:45 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIG-0006WT-Iz; Thu, 04 Nov 2021 12:56:36 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHH-0004gk-A8 for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:35 +0000 Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 8AF863F1F6 for ; Thu, 4 Nov 2021 12:55:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030532; bh=i/NXkljtmue9ElWkWihftQFg2Pczp2sGpUUaoc06b9Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bzrRfULF7TsCYmXdG3/FcSQrj7FQEsZyOgVUoXnSLOsG9LE2se+UJCcNFsTFpD4CF 7A+By+KnQ5ltYC2lV/Ops1cJ72gsKLSBvqCFOco2co0AYiRc0HdQOXUgJbHOBX0/W4 TNfg6QyFfXYgGtCsaC53lVd1r/CkZ14BTU1DZHMHdRR1DFjNf04EUGH93HREF+kJ/R WsolprKVMe32jcj76StEK4kxcm7T6QrTEruhJqegBGctS+vHFcmACqFolYQMlDf7mX R7Tyu84Z1tEXDXjtdZuYi5t72dmFJ6uDfRhqyMWfjfsKJNOyr3qJR7VmAP4nVPuSj/ 7QzHGG0zvT9Gg== Received: by mail-pf1-f198.google.com with SMTP id 3-20020a620403000000b0044dbf310032so3781981pfe.0 for ; Thu, 04 Nov 2021 05:55:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=i/NXkljtmue9ElWkWihftQFg2Pczp2sGpUUaoc06b9Y=; b=Ggp7uIMPKbB34uXsZHFwKeER+JM+Ru82QuKvpH/HEultbqBGJMHWxXv6kekkVlG5Me pPqJGuQ+v95Htg4/KcsdxBsR3bt+SjBpgyge7B6S+wBM32HKpd1GxMvZIwJ1opcl7Ckc gHfOMLJ3sXuGa+vL58/4wccFhzN2QFDzICENZmT/5jJebK9PDFNwLup2t74HSby/8Pwy /iE57rR/QtA93owRcNYUAiLNDgzLHuGn7AGF/8aboJD3npOEWEGYITxeSpoxVpzqUhjo w8vfTipMQnV5eLoBvf0Og4csSRH9kcCdZQNUvDvfFyF67jmDX6SEI3GdGgC6uQxSOoji 4EsA== X-Gm-Message-State: AOAM53380wwvX9RgCSPJcTsvnqzR36/ujzSS2CPsUE5rFqqouWDBRZU2 q5/U0BUVcrqeZUnZIhNNEULYJyCpTCp6YJz3bWkmQIu2h//C7YjEyU8xqCp+Kl0KeQ5F7ijcpUl 8zWSdTSNa7+MV11mBXX5fkPP6lThVtOWIQ0tG/Oi/ng== X-Received: by 2002:a05:6a00:ac6:b029:374:a33b:a74 with SMTP id c6-20020a056a000ac6b0290374a33b0a74mr52495012pfl.51.1636030530748; Thu, 04 Nov 2021 05:55:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyHgzapiVFVNzsEDfTOVlYwVUFE3Do8UUDBiocALqrHO1uNXbcbhNBl7z85DC1p+ubp6nW+rA== X-Received: by 2002:a05:6a00:ac6:b029:374:a33b:a74 with SMTP id c6-20020a056a000ac6b0290374a33b0a74mr52494986pfl.51.1636030530428; Thu, 04 Nov 2021 05:55:30 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:30 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 23/41] UBUNTU: SAUCE: arm64: hyperv: Add kexec and panic handlers Date: Thu, 4 Nov 2021 06:54:31 -0600 Message-Id: <20211104125449.16540-24-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 Add function to inform Hyper-V about a guest panic. Also add functions to set up and remove kexec and panic handlers, which are currently unused on ARM64 but are called from architecture independent code in the VMbus driver. This code is built only when CONFIG_HYPERV is enabled. Signed-off-by: Michael Kelley Reviewed-by: Sunil Muthuswamy [marcelo.cerri@canonical.com: back ported from https://lore.kernel.org/linux-hyperv/1620841067-46606-5-git-send-email-mikelley@microsoft.com/] Signed-off-by: Marcelo Henrique Cerri --- arch/arm64/hyperv/Makefile | 2 +- arch/arm64/hyperv/hv_core.c | 52 ++++++++++++++++++++++++++++++++++ arch/arm64/hyperv/mshyperv.c | 54 ++++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 arch/arm64/hyperv/mshyperv.c diff --git a/arch/arm64/hyperv/Makefile b/arch/arm64/hyperv/Makefile index 1697d30ff106..87c31c001da9 100644 --- a/arch/arm64/hyperv/Makefile +++ b/arch/arm64/hyperv/Makefile @@ -1,2 +1,2 @@ # SPDX-License-Identifier: GPL-2.0 -obj-y := hv_core.o +obj-y := hv_core.o mshyperv.o diff --git a/arch/arm64/hyperv/hv_core.c b/arch/arm64/hyperv/hv_core.c index 4c5dc0f51b12..316679355f89 100644 --- a/arch/arm64/hyperv/hv_core.c +++ b/arch/arm64/hyperv/hv_core.c @@ -127,3 +127,55 @@ u64 hv_get_vpreg(u32 msr) return output.as64.low; } EXPORT_SYMBOL_GPL(hv_get_vpreg); + +/* + * hyperv_report_panic - report a panic to Hyper-V. This function uses + * the older version of the Hyper-V interface that admittedly doesn't + * pass enough information to be useful beyond just recording the + * occurrence of a panic. The parallel hv_kmsg_dump() uses the + * new interface that allows reporting 4 Kbytes of data, which is much + * more useful. Hyper-V on ARM64 always supports the newer interface, but + * we retain support for the older version because the sysadmin is allowed + * to disable the newer version via sysctl in case of information security + * concerns about the more verbose version. + */ +void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die) +{ + static bool panic_reported; + u64 guest_id; + + /* Don't report a panic to Hyper-V if we're not going to panic */ + if (in_die && !panic_on_oops) + return; + + /* + * We prefer to report panic on 'die' chain as we have proper + * registers to report, but if we miss it (e.g. on BUG()) we need + * to report it on 'panic'. + * + * Calling code in the 'die' and 'panic' paths ensures that only + * one CPU is running this code, so no atomicity is needed. + */ + if (panic_reported) + return; + panic_reported = true; + + guest_id = hv_get_vpreg(HV_REGISTER_GUEST_OSID); + + /* + * Hyper-V provides the ability to store only 5 values. + * Pick the passed in error value, the guest_id, and the PC. + * The first two general registers are added arbitrarily. + */ + hv_set_vpreg(HV_REGISTER_CRASH_P0, err); + hv_set_vpreg(HV_REGISTER_CRASH_P1, guest_id); + hv_set_vpreg(HV_REGISTER_CRASH_P2, regs->pc); + hv_set_vpreg(HV_REGISTER_CRASH_P3, regs->regs[0]); + hv_set_vpreg(HV_REGISTER_CRASH_P4, regs->regs[1]); + + /* + * Let Hyper-V know there is crash data available + */ + hv_set_vpreg(HV_REGISTER_CRASH_CTL, HV_CRASH_CTL_CRASH_NOTIFY); +} +EXPORT_SYMBOL_GPL(hyperv_report_panic); diff --git a/arch/arm64/hyperv/mshyperv.c b/arch/arm64/hyperv/mshyperv.c new file mode 100644 index 000000000000..d202b4c78ffc --- /dev/null +++ b/arch/arm64/hyperv/mshyperv.c @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* + * Core routines for interacting with Microsoft's Hyper-V hypervisor. + * Includes hypervisor initialization, and handling of crashes and + * kexecs through a set of static "handler" variables set by the + * architecture independent VMbus driver. + * + * Copyright (C) 2021, Microsoft, Inc. + * + * Author : Michael Kelley + */ + +#include +#include +#include + +/* + * The VMbus handler functions are no-ops on ARM64 because + * VMbus interrupts are handled as percpu IRQs. + */ +void hv_setup_vmbus_handler(void (*handler)(void)) +{ +} +EXPORT_SYMBOL_GPL(hv_setup_vmbus_handler); + +void hv_remove_vmbus_handler(void) +{ +} +EXPORT_SYMBOL_GPL(hv_remove_vmbus_handler); + +/* + * The kexec and crash handler functions are + * currently no-ops on ARM64. + */ +void hv_setup_kexec_handler(void (*handler)(void)) +{ +} +EXPORT_SYMBOL_GPL(hv_setup_kexec_handler); + +void hv_remove_kexec_handler(void) +{ +} +EXPORT_SYMBOL_GPL(hv_remove_kexec_handler); + +void hv_setup_crash_handler(void (*handler)(struct pt_regs *regs)) +{ +} +EXPORT_SYMBOL_GPL(hv_setup_crash_handler); + +void hv_remove_crash_handler(void) +{ +} +EXPORT_SYMBOL_GPL(hv_remove_crash_handler); From patchwork Thu Nov 4 12:54:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550917 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=dv6WdjLs; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNv43p45z9sP7 for ; Thu, 4 Nov 2021 23:56:48 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIJ-0006fx-1P; Thu, 04 Nov 2021 12:56:39 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHH-0004hm-VQ for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:36 +0000 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 63DB63F1C0 for ; Thu, 4 Nov 2021 12:55:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030533; bh=gqQ9H42/ZKce1TSmS4tEB09vygNmT74H+j33C1ToFmg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dv6WdjLsh0TfxOnm7rClwTj0BL8TL2ijiCXHZq8rbAYeyQuz8A976zGEcqyzjCYs9 B4KPwaYHyyWavfQbtA8zMsZOxusf0uPrS1pQQZ1wmHSlYZoTtaMMsuCsmNf1dLvcnK raL6nADT1+Nf/KJF45PNAP2fXpaoUdAde3oAx8gjHNYWtrIHqNEM2hYRQI86xRSUvM 0sp88o2oLvQw8uAH76iD3c3o9iP1828LAL2gMDBE5BLu5WNrRlCIk53AGQWxkCSVat 8tO+XjqaeH9qopU5RbAoFA4qsYqhLYAoZsOHlZMBpLvaT8Fm794dOV5Iptr10iNBnL OkGssFaVuJ5iQ== Received: by mail-pl1-f199.google.com with SMTP id u10-20020a170902e80a00b001421d86afc4so2762579plg.9 for ; Thu, 04 Nov 2021 05:55:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gqQ9H42/ZKce1TSmS4tEB09vygNmT74H+j33C1ToFmg=; b=ZU8Rac9zREdLXmpv7ypRoNuqN3+yFvFOqh7P/088A+0dQhC7LNLRV9eoLV82ZpA6Kl 2GxWg6BD0hVNyD7lEJkWrSrjJnuIQGFinR6g8JLltjOGqIZgTovJ4YeXyqwIa1dcmFor vsnZORs2y8qCIKs8hNBarvt4Nr/CQOK06ToJZbitWo/prsHdn13vJvV4AKoabIieqEjY VlvQAOlH0m3Q+foOmrlM3WGNgiB1LWLp8cPh3n7ox+xDMpcZT6pfOr39UJEEmMtZYQoZ bqZ5IWVySetVRN41S768FWfneUlhAxwRZAgvRI5w09FBDOyKOLA49JYvSJR+J7cKaZMf aSNw== X-Gm-Message-State: AOAM533Jrr2kD4syW/XKZfcSIRyXN/1Na0HBghGFnd14/oCd3i1SeHmr uxYutM/m6oTobqlgnrwckvxwP2yFXq6HcO0T5SFWG7a5Zl44I5DP4tKdVqyfj6iZ33GnMafhCpJ qYByhND/btkiVWQcxQ0M4WGu8E8UrLbiO1uT/6GR/zQ== X-Received: by 2002:a05:6a00:244e:b0:47b:7dbf:e23d with SMTP id d14-20020a056a00244e00b0047b7dbfe23dmr52254495pfj.34.1636030531488; Thu, 04 Nov 2021 05:55:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw2IcWR/0l5YRS+qEHKe/tknxwKpYt5ZdAgEiEfqWtJT9D5MOJSL2zKpFvNmy8oeL3QSIhUvw== X-Received: by 2002:a05:6a00:244e:b0:47b:7dbf:e23d with SMTP id d14-20020a056a00244e00b0047b7dbfe23dmr52254464pfj.34.1636030531164; Thu, 04 Nov 2021 05:55:31 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:30 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 24/41] UBUNTU: SAUCE: arm64: hyperv: Initialize hypervisor on boot Date: Thu, 4 Nov 2021 06:54:32 -0600 Message-Id: <20211104125449.16540-25-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 Add ARM64-specific code to initialize the Hyper-V hypervisor when booting as a guest VM. Provide functions and data structures indicating hypervisor status that are needed by VMbus driver. This code is built only when CONFIG_HYPERV is enabled. Signed-off-by: Michael Kelley [marcelo.cerri@canonical.com: back ported from https://lore.kernel.org/linux-hyperv/1620841067-46606-6-git-send-email-mikelley@microsoft.com/] Signed-off-by: Marcelo Henrique Cerri --- arch/arm64/hyperv/mshyperv.c | 152 ++++++++++++++++++++++++++++++ arch/arm64/include/asm/mshyperv.h | 6 ++ arch/arm64/kernel/setup.c | 4 + 3 files changed, 162 insertions(+) diff --git a/arch/arm64/hyperv/mshyperv.c b/arch/arm64/hyperv/mshyperv.c index d202b4c78ffc..95f7e4ef3033 100644 --- a/arch/arm64/hyperv/mshyperv.c +++ b/arch/arm64/hyperv/mshyperv.c @@ -14,6 +14,158 @@ #include #include #include +#include +#include +#include +#include +#include +#include +#include + +static bool hyperv_initialized; +struct ms_hyperv_info ms_hyperv __ro_after_init; +EXPORT_SYMBOL_GPL(ms_hyperv); + +bool hv_root_partition; +EXPORT_SYMBOL_GPL(hv_root_partition); + +u32 *hv_vp_index; +EXPORT_SYMBOL_GPL(hv_vp_index); + +u32 hv_max_vp_index; +EXPORT_SYMBOL_GPL(hv_max_vp_index); + +void __percpu **hyperv_pcpu_input_arg; +EXPORT_SYMBOL_GPL(hyperv_pcpu_input_arg); + +static int hv_cpu_init(unsigned int cpu) +{ + void **input_arg = (void **)this_cpu_ptr(hyperv_pcpu_input_arg); + + hv_vp_index[cpu] = hv_get_vpreg(HV_REGISTER_VP_INDEX); + + *input_arg = kmalloc(HV_HYP_PAGE_SIZE, GFP_KERNEL); + if (!(*input_arg)) + return -ENOMEM; + + return 0; +} + +void __init hyperv_early_init(void) +{ + struct hv_get_vp_registers_output result; + u32 a, b, c, d; + u64 guest_id; + + /* + * If we're in a VM on Hyper-V, the ACPI hypervisor_id field will + * have the string "MsHyperV". + */ + if (strncmp((char *)&acpi_gbl_FADT.hypervisor_id, "MsHyperV", 8)) + return; + + /* Setup the guest ID */ + guest_id = generate_guest_id(0, LINUX_VERSION_CODE, 0); + hv_set_vpreg(HV_REGISTER_GUEST_OSID, guest_id); + + /* Get the features and hints from Hyper-V */ + hv_get_vpreg_128(HV_REGISTER_FEATURES, &result); + ms_hyperv.features = result.as32.a; + ms_hyperv.priv_high = result.as32.b; + ms_hyperv.misc_features = result.as32.c; + + hv_get_vpreg_128(HV_REGISTER_ENLIGHTENMENTS, &result); + ms_hyperv.hints = result.as32.a; + + pr_info("Hyper-V: privilege flags low 0x%x, high 0x%x, hints 0x%x, misc 0x%x\n", + ms_hyperv.features, ms_hyperv.priv_high, ms_hyperv.hints, + ms_hyperv.misc_features); + + /* + * If Hyper-V has crash notifications, set crash_kexec_post_notifiers + * so that we will report the panic to Hyper-V before running kdump. + */ + if (ms_hyperv.misc_features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) + crash_kexec_post_notifiers = true; + + /* Get information about the Hyper-V host version */ + hv_get_vpreg_128(HV_REGISTER_HYPERVISOR_VERSION, &result); + a = result.as32.a; + b = result.as32.b; + c = result.as32.c; + d = result.as32.d; + pr_info("Hyper-V: Host Build %d.%d.%d.%d-%d-%d\n", + b >> 16, b & 0xFFFF, a, d & 0xFFFFFF, c, d >> 24); + + hyperv_initialized = true; +} + +static int __init hyperv_init(void) +{ + int i, ret; + + hyperv_pcpu_input_arg = alloc_percpu(void *); + if (!hyperv_pcpu_input_arg) + return -ENOMEM; + + /* Allocate and initialize percpu VP index array */ + hv_max_vp_index = num_possible_cpus(); + hv_vp_index = kmalloc_array(hv_max_vp_index, sizeof(*hv_vp_index), + GFP_KERNEL); + if (!hv_vp_index) { + ret = -ENOMEM; + goto free_input_arg; + } + + for (i = 0; i < hv_max_vp_index; i++) + hv_vp_index[i] = VP_INVAL; + + if (cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "arm64/hyperv_init:online", + hv_cpu_init, NULL) < 0) { + ret = -EINVAL; + goto free_vp_index; + } + + return 0; + +free_vp_index: + kfree(hv_vp_index); + hv_vp_index = NULL; + +free_input_arg: + hv_max_vp_index = 0; + free_percpu(hyperv_pcpu_input_arg); + hyperv_pcpu_input_arg = NULL; + return ret; +} + +early_initcall(hyperv_init); + +/* This routine is called before kexec/kdump. It does required cleanup. */ +void hyperv_cleanup(void) +{ + hv_set_vpreg(HV_REGISTER_GUEST_OSID, 0); + +} +EXPORT_SYMBOL_GPL(hyperv_cleanup); + +bool hv_is_hyperv_initialized(void) +{ + return hyperv_initialized; +} +EXPORT_SYMBOL_GPL(hv_is_hyperv_initialized); + +bool hv_is_hibernation_supported(void) +{ + return false; +} +EXPORT_SYMBOL_GPL(hv_is_hibernation_supported); + +bool hv_is_isolation_supported(void) +{ + return false; +} +EXPORT_SYMBOL_GPL(hv_is_isolation_supported); /* * The VMbus handler functions are no-ops on ARM64 because diff --git a/arch/arm64/include/asm/mshyperv.h b/arch/arm64/include/asm/mshyperv.h index e1486bf02599..8f1de3124fc9 100644 --- a/arch/arm64/include/asm/mshyperv.h +++ b/arch/arm64/include/asm/mshyperv.h @@ -23,6 +23,12 @@ #include #include +#if IS_ENABLED(CONFIG_HYPERV) +void __init hyperv_early_init(void); +#else +static inline void hyperv_early_init(void) {}; +#endif + /* * Declare calls to get and set Hyper-V VP register values on ARM64, which * requires a hypercall. diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index c6bbc03f4527..96c397ea622d 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -49,6 +49,7 @@ #include #include #include +#include #include static int num_standard_resources; @@ -340,6 +341,9 @@ void __init __no_sanitize_address setup_arch(char **cmdline_p) if (acpi_disabled) unflatten_device_tree(); + /* Do after acpi_boot_table_init() so local FADT is available */ + hyperv_early_init(); + bootmem_init(); kasan_init(); From patchwork Thu Nov 4 12:54:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550919 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=VWegNvtE; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNv84wk5z9sP7 for ; Thu, 4 Nov 2021 23:56:52 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIN-0006zT-RE; Thu, 04 Nov 2021 12:56:43 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHI-0004it-JA for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:36 +0000 Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id E14953F1F5 for ; Thu, 4 Nov 2021 12:55:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030533; bh=dZ35SUXAL4sALgRsI2qfN4NgESDTJ5k78k7/U4TPUt0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=VWegNvtE6OUVRNnhcLLyKMwkHuUCFSMzgtUc6bu+MhsbLj+htqHXTdyY9mPECi2KX gvP7kpBhhRUJhkxTtsuxp+VcaP7WOVyGLlq7WghXJ9ZgDMvyDZ2Kh7ZnrScvwjFOTu mGK3/IODeD46pFk/NXkZg479SvzyTZj/LflNYnyC0Ld3i6US1RBVA2HrAx2YG5/oj8 t96jKsm+vnH28wBBK7nY673zJF2AhW2BXHVfgaarwOc46cQ3jstIA8UzZxNh298td4 S7EL/Z/+bxbfn1naGEuTXHSWFrjO4AcvSHbZgZWgYpsGfU2b+tgRQVuM4FSb/WXqXs J2I+Nm/kBzGAA== Received: by mail-pg1-f198.google.com with SMTP id h10-20020a63df4a000000b002a6ba425b58so3627294pgj.17 for ; Thu, 04 Nov 2021 05:55:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dZ35SUXAL4sALgRsI2qfN4NgESDTJ5k78k7/U4TPUt0=; b=hU+VR+FMEUenrAXRJX0ODlj48XtoNIz8YU9pTH1ABnTlRbujVj/fLLoZz4OQDG7uPe GpeFZ2280t5AVxMCIIKeHnhPp8BkZPG1hZH0zUWvTlC9weQKSqbZDN6xwhVNCKUyiUqv JJ7NW2PaBMG4PXsZ9zxMqxpSzDOwkTLJ92E6JPn0U0Xgho0n8qMh8os0qcf3Ii3i1MVO 9ukEfX8ntroblXqckmpFtwzBnetXeOfhBhQWa+rg0hNB+YbZEmNQhzCss2xu2nzT61Fx OM6YzBd+ol5EASyz8uxzXJambfoDE9tZhOEtFg02RxNJ84c/dRrHMF+nljNW58YtEmNK yTVg== X-Gm-Message-State: AOAM530J29nWCxzC4jRpbWH/qjJOko5eKyA+y/BvOO5u1sRmyLhPvIgu avCpwPnqv8t6G0NYT1RSh9CfAZtI3XWcj0x4QsP2q/+TJ05cCerPwCI4D9XkTiVR7b4A3hNPamt evTjujqk7pApJMW1p6fvigXzMODZN8o8/mYY9ydWElA== X-Received: by 2002:a05:6a00:1781:b0:44d:faef:f2c0 with SMTP id s1-20020a056a00178100b0044dfaeff2c0mr50992692pfg.68.1636030532217; Thu, 04 Nov 2021 05:55:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzYEnAU4E4fMJW66C/fWhoYxOqgarYQcuyxxOZRrKHFXp86/KwRrJyA4BuAyhgXzccBxH7CCg== X-Received: by 2002:a05:6a00:1781:b0:44d:faef:f2c0 with SMTP id s1-20020a056a00178100b0044dfaeff2c0mr50992665pfg.68.1636030531954; Thu, 04 Nov 2021 05:55:31 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:31 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 25/41] arm64: efi: Export screen_info Date: Thu, 4 Nov 2021 06:54:33 -0600 Message-Id: <20211104125449.16540-26-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 The Hyper-V frame buffer driver may be built as a module, and it needs access to screen_info. So export screen_info. Signed-off-by: Michael Kelley Acked-by: Ard Biesheuvel Acked-by: Marc Zyngier Acked-by: Mark Rutland Acked-by: Catalin Marinas Link: https://lore.kernel.org/r/1628092359-61351-5-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (cherry picked from commit 9b16c2132f34316bf0b59d24357a788cc1e9e352) Signed-off-by: Tim Gardner --- arch/arm64/kernel/efi.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c index fa02efb28e88..e1be6c429810 100644 --- a/arch/arm64/kernel/efi.c +++ b/arch/arm64/kernel/efi.c @@ -55,6 +55,7 @@ static __init pteval_t create_mapping_protection(efi_memory_desc_t *md) /* we will fill this structure from the stub, so don't put it in .bss */ struct screen_info screen_info __section(".data"); +EXPORT_SYMBOL(screen_info); int __init efi_create_mapping(struct mm_struct *mm, efi_memory_desc_t *md) { From patchwork Thu Nov 4 12:54:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550918 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=WPXceJVU; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNv639qmz9sP7 for ; Thu, 4 Nov 2021 23:56:50 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIL-0006qf-RM; Thu, 04 Nov 2021 12:56:41 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHJ-0004ke-A7 for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:37 +0000 Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id E9D433F33C for ; Thu, 4 Nov 2021 12:55:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030534; bh=ehgndKNSvEN0BvbfJJvtEQH4ehL/EUNmi3AT2EB0vzc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=WPXceJVUqym9xqF8Xu5X0+jA3FUSNxPVSkVv0YxnJidckohm+GEFrMpxezUyDpyUl 5TaPoLsqraygiuL/5UVmH5QhzfVX4e0xCS0D9Uu4d7XQIjSkde+Vnpx7/2dzBrVmYK BzW2We2Lz5X/q3AFXweRclsBmJiCd2/nEbw6d/CKS/EMuzfb42oSB4uCt01YsvjfgI NbbcmqEs6g10Y1m+YEu1aKd9G3xiNrrjVWB5SOZ4BHLFqUIA90Y9AOd1zFMTxrbI+n VMzTMMwe+tFgKXUDA6Ecir+2LD442dGT//sSP4lpuUrjQeqGLntfJ3KxQUv+hPYD3n y0j9wSmv9MGew== Received: by mail-pf1-f198.google.com with SMTP id x34-20020a056a0018a200b004945bce89bdso1931883pfh.17 for ; Thu, 04 Nov 2021 05:55:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ehgndKNSvEN0BvbfJJvtEQH4ehL/EUNmi3AT2EB0vzc=; b=EHDzn1WGrek0pQeW0wROJqEZ2PaRkfDMNZKkhgm0ruSPq3gCeI73E44wL2hgybgWYU k6WqNzmrz1UEXzPUaOlyApYN+0zfBBZf+ev+5K24U6jrlqRc2O95hM5QpxWQUEk5HdbD VnnM4tI0sKW10l7UkvTgWmyrDYGPl7jHabcBGPRqtbXHVDh3ucwZkHLIgb+ozceUhSq4 JMQSGnbGswz4DQ9WZn2jZCpG6ABkpVHRstB+BIisLqPYZ8JtR/cRg8n59z4V36XQJX6i 9E+KphtFUxR4wXafz8SqHO7W1M1BU/SLh2P6iGi2Vzmn856FHsDe4PsJS6kZueSrrdUU L1Zg== X-Gm-Message-State: AOAM531brlDcUMeiratTsYF2OksXUSOTzAE3JPsZIzy2ZZpBJHofiL7B EIL92NjlxsTkxmq1BJWd2VwBx9lACIDgG+Ewju1YG/UVDxKykW49Jypk4b6ZgoA8BSK2/o3+LIt B/CStCPhzekFboWxoIJ8HkMboeGYQZqU72XXrq6mpwg== X-Received: by 2002:aa7:8b56:0:b0:44b:e510:a208 with SMTP id i22-20020aa78b56000000b0044be510a208mr52833215pfd.56.1636030533207; Thu, 04 Nov 2021 05:55:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwgOVHN+facN+WNZdWrN67269mJonOvrXZKblJwszyiIe8G9bjRD/CutwKbpsCJXY6PAF116g== X-Received: by 2002:aa7:8b56:0:b0:44b:e510:a208 with SMTP id i22-20020aa78b56000000b0044be510a208mr52833192pfd.56.1636030532979; Thu, 04 Nov 2021 05:55:32 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:32 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 26/41] x86/hyperv: fix for unwanted manipulation of sched_clock when TSC marked unstable Date: Thu, 4 Nov 2021 06:54:34 -0600 Message-Id: <20211104125449.16540-27-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Ani Sinha BugLink: https://bugs.launchpad.net/bugs/1949770 Marking TSC as unstable has a side effect of marking sched_clock as unstable when TSC is still being used as the sched_clock. This is not desirable. Hyper-V ultimately uses a paravirtualized clock source that provides a stable scheduler clock even on systems without TscInvariant CPU capability. Hence, mark_tsc_unstable() call should be called _after_ scheduler clock has been changed to the paravirtualized clocksource. This will prevent any unwanted manipulation of the sched_clock. Only TSC will be correctly marked as unstable. Signed-off-by: Ani Sinha Reviewed-by: Michael Kelley Tested-by: Michael Kelley Link: https://lore.kernel.org/r/20210713030522.1714803-1-ani@anisinha.ca Signed-off-by: Wei Liu (cherry picked from commit c445535c3efbfb8cb42d098e624d46ab149664b7 linux-next) Signed-off-by: Tim Gardner --- arch/x86/kernel/cpu/mshyperv.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c index 77947bd68c08..654ec4412161 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -335,8 +335,6 @@ static void __init ms_hyperv_init_platform(void) if (ms_hyperv.features & HV_ACCESS_TSC_INVARIANT) { wrmsrl(HV_X64_MSR_TSC_INVARIANT_CONTROL, 0x1); setup_force_cpu_cap(X86_FEATURE_TSC_RELIABLE); - } else { - mark_tsc_unstable("running on Hyper-V"); } /* @@ -395,6 +393,13 @@ static void __init ms_hyperv_init_platform(void) /* Register Hyper-V specific clocksource */ hv_init_clocksource(); #endif + /* + * TSC should be marked as unstable only after Hyper-V + * clocksource has been initialized. This ensures that the + * stability of the sched_clock is not altered. + */ + if (!(ms_hyperv.features & HV_ACCESS_TSC_INVARIANT)) + mark_tsc_unstable("running on Hyper-V"); } static bool __init ms_hyperv_x2apic_available(void) From patchwork Thu Nov 4 12:54:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550920 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=iOOk3PZD; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNvC078Hz9sP7 for ; Thu, 4 Nov 2021 23:56:55 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIQ-0007AP-NV; Thu, 04 Nov 2021 12:56:46 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHK-0004ms-G0 for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:38 +0000 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id C5FC33F1F5 for ; Thu, 4 Nov 2021 12:55:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030536; bh=jXcf93BS5G/t+Qt19Y4lcGx04aMWdOnmb9Kuyeqlas8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=iOOk3PZDyZDAG8S6FigjoQf3gzsOgbl8fITN1ipw+kN9lFlep+wrZSR5t9DQi6Bmj Yu0cY8LHzV/KwcxSm4gZhAPdmn/xE0FCC31ybkJuB7BdAvMuDSYcAoD8xIfaJHQnuf nBzV1lYsT3m01HyZTS1+NYijYjiS5zN6bi0cLmWO7ktN2//aaImQsNOVjCtjCKF1QL S2LZTN4lue4ojveEtrIko3iPzx2OMPIOmVem9rF53CF+MeQcV20X2IvS2yNGA7R0co e9XuZYl5H6JmyDDThss5VBVp2eTTciuCx8vaO0JFTJ8EZzrns5VOxeB6+ApP1cECa1 UjG0yUNxrmEkQ== Received: by mail-pg1-f197.google.com with SMTP id e6-20020a637446000000b002993ba24bbaso3652132pgn.12 for ; Thu, 04 Nov 2021 05:55:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jXcf93BS5G/t+Qt19Y4lcGx04aMWdOnmb9Kuyeqlas8=; b=K8y+Llc1coCopcEf4SuktPkl9cI558GZSBwWDqGu++gW25aDwO0ef3HNb13ZX63mJ+ 9YJ1vk/Bq15fhD9dzNOas4/FARnWiLAbeVl/VRGRKistYPU8mLksBcjJtGkUQ7MbT0rs PqrUmA4/Tz9aOlUc1QnFa4dHg13NSSbRdBrNIYRPQFYU3b8O3ne0QOCyf/DpXpuTyzaG s7yufEPQzTknLP2Y3DxBDqxpoclSRpuHHoU9TZkdCvt8eilXPVJCwTF8OAer1+LIWAV1 p0r1rEI2+dsfsMvk/mIumNW6YqeV4PaNX4TKlS9bMwQEHImwaxAljTDKvHhnhqNB5GuA HF1A== X-Gm-Message-State: AOAM533CSmRwEukAjTa9BXOCdwi3iUNaz2/DUof8EDZXjU802yJdaPpH 1WORCX5zAH8jUAMbmf1VlAixFQxBsfmGAzkNYZ5svH162ljQtLsBDmNYYezUp3r8A0Ypouf1+Yo ZIM92oq33o3N5nR2Oj1wdUdpyAIl2O59Ip0XtZliJpg== X-Received: by 2002:a65:4209:: with SMTP id c9mr38245148pgq.399.1636030534483; Thu, 04 Nov 2021 05:55:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzL1QBwcdRY3/0JOT9jvt60Dw9j7D86oK9VIRpIMi6g/WslgcBP4488rN6WMorKk01KkEeK1g== X-Received: by 2002:a65:4209:: with SMTP id c9mr38245114pgq.399.1636030534035; Thu, 04 Nov 2021 05:55:34 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:33 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 27/41] Drivers: hv: Make portions of Hyper-V init code be arch neutral Date: Thu, 4 Nov 2021 06:54:35 -0600 Message-Id: <20211104125449.16540-28-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 The code to allocate and initialize the hv_vp_index array is architecture neutral. Similarly, the code to allocate and populate the hypercall input and output arg pages is architecture neutral. Move both sets of code out from arch/x86 and into utility functions in drivers/hv/hv_common.c that can be shared by Hyper-V initialization on ARM64. No functional changes. However, the allocation of the hypercall input and output arg pages is done differently so that the size is always the Hyper-V page size, even if not the same as the guest page size (such as with ARM64's 64K page size). Signed-off-by: Michael Kelley Link: https://lore.kernel.org/r/1626287687-2045-2-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (backported from commit afca4d95dd7d7936d46a0ff02169cc40f534a6a3) Signed-off-by: Tim Gardner [rtg - minor conflict adjustments. Dropped duplicate definitions of hyperv_pcpu_input_arg, hv_max_vp_index, and hv_vp_index in arch/arm64/hyperv/mshyperv.c] --- arch/arm64/hyperv/mshyperv.c | 9 --- arch/x86/hyperv/hv_init.c | 66 +++------------- arch/x86/kernel/cpu/mshyperv.c | 3 - drivers/hv/hv_common.c | 138 +++++++++++++++++++++++++++++++++ include/asm-generic/mshyperv.h | 8 ++ 5 files changed, 156 insertions(+), 68 deletions(-) diff --git a/arch/arm64/hyperv/mshyperv.c b/arch/arm64/hyperv/mshyperv.c index 95f7e4ef3033..1748f99ca65b 100644 --- a/arch/arm64/hyperv/mshyperv.c +++ b/arch/arm64/hyperv/mshyperv.c @@ -29,15 +29,6 @@ EXPORT_SYMBOL_GPL(ms_hyperv); bool hv_root_partition; EXPORT_SYMBOL_GPL(hv_root_partition); -u32 *hv_vp_index; -EXPORT_SYMBOL_GPL(hv_vp_index); - -u32 hv_max_vp_index; -EXPORT_SYMBOL_GPL(hv_max_vp_index); - -void __percpu **hyperv_pcpu_input_arg; -EXPORT_SYMBOL_GPL(hyperv_pcpu_input_arg); - static int hv_cpu_init(unsigned int cpu) { void **input_arg = (void **)this_cpu_ptr(hyperv_pcpu_input_arg); diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c index b952e7d38459..08284bfca479 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -43,38 +43,17 @@ EXPORT_SYMBOL_GPL(hv_hypercall_pg); /* Storage to save the hypercall page temporarily for hibernation */ static void *hv_hypercall_pg_saved; -u32 *hv_vp_index; -EXPORT_SYMBOL_GPL(hv_vp_index); - struct hv_vp_assist_page **hv_vp_assist_page; EXPORT_SYMBOL_GPL(hv_vp_assist_page); -void __percpu **hyperv_pcpu_input_arg; -EXPORT_SYMBOL_GPL(hyperv_pcpu_input_arg); - -u32 hv_max_vp_index; -EXPORT_SYMBOL_GPL(hv_max_vp_index); - static int hv_cpu_init(unsigned int cpu) { - u64 msr_vp_index; struct hv_vp_assist_page **hvp = &hv_vp_assist_page[smp_processor_id()]; - void **input_arg; - struct page *pg; - - input_arg = (void **)this_cpu_ptr(hyperv_pcpu_input_arg); - /* hv_cpu_init() can be called with IRQs disabled from hv_resume() */ - pg = alloc_page(irqs_disabled() ? GFP_ATOMIC : GFP_KERNEL); - if (unlikely(!pg)) - return -ENOMEM; - *input_arg = page_address(pg); - - msr_vp_index = hv_get_register(HV_REGISTER_VP_INDEX); - - hv_vp_index[smp_processor_id()] = msr_vp_index; + int ret; - if (msr_vp_index > hv_max_vp_index) - hv_max_vp_index = msr_vp_index; + ret = hv_common_cpu_init(cpu); + if (ret) + return ret; if (!hv_vp_assist_page) return 0; @@ -192,16 +171,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 *input_pg = NULL; - local_irq_save(flags); - input_arg = (void **)this_cpu_ptr(hyperv_pcpu_input_arg); - input_pg = *input_arg; - *input_arg = NULL; - local_irq_restore(flags); - free_page((unsigned long)input_pg); + hv_common_cpu_die(cpu); if (hv_vp_assist_page && hv_vp_assist_page[cpu]) wrmsrl(HV_X64_MSR_VP_ASSIST_PAGE, 0); @@ -332,7 +303,7 @@ void __init hyperv_init(void) { u64 guest_id, required_msrs; union hv_x64_msr_hypercall_contents hypercall_msr; - int cpuhp, i; + int cpuhp; if (x86_hyper_type != X86_HYPER_MS_HYPERV) return; @@ -344,30 +315,14 @@ void __init hyperv_init(void) if ((ms_hyperv.features & required_msrs) != required_msrs) return; - /* - * Allocate the per-CPU state for the hypercall input arg. - * If this allocation fails, we will not be able to setup - * (per-CPU) hypercall input page and thus this failure is - * fatal on Hyper-V. - */ - hyperv_pcpu_input_arg = alloc_percpu(void *); - - BUG_ON(hyperv_pcpu_input_arg == NULL); - - /* Allocate percpu VP index */ - hv_vp_index = kmalloc_array(num_possible_cpus(), sizeof(*hv_vp_index), - GFP_KERNEL); - if (!hv_vp_index) + if (hv_common_init()) return; - for (i = 0; i < num_possible_cpus(); i++) - hv_vp_index[i] = VP_INVAL; - hv_vp_assist_page = kcalloc(num_possible_cpus(), sizeof(*hv_vp_assist_page), GFP_KERNEL); if (!hv_vp_assist_page) { ms_hyperv.hints &= ~HV_X64_ENLIGHTENED_VMCS_RECOMMENDED; - goto free_vp_index; + goto common_free; } cpuhp = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "x86/hyperv_init:online", @@ -424,9 +379,8 @@ void __init hyperv_init(void) free_vp_assist_page: kfree(hv_vp_assist_page); hv_vp_assist_page = NULL; -free_vp_index: - kfree(hv_vp_index); - hv_vp_index = NULL; +common_free: + hv_common_free(); } /* diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c index 654ec4412161..ea7091596d73 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -34,10 +34,7 @@ /* Is Linux running as the root partition? */ bool hv_root_partition; -EXPORT_SYMBOL_GPL(hv_root_partition); - struct ms_hyperv_info ms_hyperv; -EXPORT_SYMBOL_GPL(ms_hyperv); #if IS_ENABLED(CONFIG_HYPERV) static void (*vmbus_handler)(void); diff --git a/drivers/hv/hv_common.c b/drivers/hv/hv_common.c index f0053c786891..caba4f728987 100644 --- a/drivers/hv/hv_common.c +++ b/drivers/hv/hv_common.c @@ -15,9 +15,147 @@ #include #include #include +#include +#include #include #include +/* + * hv_root_partition and ms_hyperv are defined here with other Hyper-V + * specific globals so they are shared across all architectures and are + * built only when CONFIG_HYPERV is defined. But on x86, + * ms_hyperv_init_platform() is built even when CONFIG_HYPERV is not + * defined, and it uses these two variables. So mark them as __weak + * here, allowing for an overriding definition in the module containing + * ms_hyperv_init_platform(). + */ +bool __weak hv_root_partition; +EXPORT_SYMBOL_GPL(hv_root_partition); + +struct ms_hyperv_info __weak ms_hyperv; +EXPORT_SYMBOL_GPL(ms_hyperv); + +u32 *hv_vp_index; +EXPORT_SYMBOL_GPL(hv_vp_index); + +u32 hv_max_vp_index; +EXPORT_SYMBOL_GPL(hv_max_vp_index); + +void __percpu **hyperv_pcpu_input_arg; +EXPORT_SYMBOL_GPL(hyperv_pcpu_input_arg); + +void __percpu **hyperv_pcpu_output_arg; +EXPORT_SYMBOL_GPL(hyperv_pcpu_output_arg); + +/* + * Hyper-V specific initialization and shutdown code that is + * common across all architectures. Called from architecture + * specific initialization functions. + */ + +void __init hv_common_free(void) +{ + kfree(hv_vp_index); + hv_vp_index = NULL; + + free_percpu(hyperv_pcpu_output_arg); + hyperv_pcpu_output_arg = NULL; + + free_percpu(hyperv_pcpu_input_arg); + hyperv_pcpu_input_arg = NULL; +} + +int __init hv_common_init(void) +{ + int i; + + /* + * Allocate the per-CPU state for the hypercall input arg. + * If this allocation fails, we will not be able to setup + * (per-CPU) hypercall input page and thus this failure is + * fatal on Hyper-V. + */ + hyperv_pcpu_input_arg = alloc_percpu(void *); + BUG_ON(!hyperv_pcpu_input_arg); + + /* Allocate the per-CPU state for output arg for root */ + if (hv_root_partition) { + hyperv_pcpu_output_arg = alloc_percpu(void *); + BUG_ON(!hyperv_pcpu_output_arg); + } + + hv_vp_index = kmalloc_array(num_possible_cpus(), sizeof(*hv_vp_index), + GFP_KERNEL); + if (!hv_vp_index) { + hv_common_free(); + return -ENOMEM; + } + + for (i = 0; i < num_possible_cpus(); i++) + hv_vp_index[i] = VP_INVAL; + + return 0; +} + +/* + * Hyper-V specific initialization and die code for + * individual CPUs that is common across all architectures. + * Called by the CPU hotplug mechanism. + */ + +int hv_common_cpu_init(unsigned int cpu) +{ + void **inputarg, **outputarg; + u64 msr_vp_index; + gfp_t flags; + int pgcount = hv_root_partition ? 2 : 1; + + /* hv_cpu_init() can be called with IRQs disabled from hv_resume() */ + flags = irqs_disabled() ? GFP_ATOMIC : GFP_KERNEL; + + inputarg = (void **)this_cpu_ptr(hyperv_pcpu_input_arg); + *inputarg = kmalloc(pgcount * HV_HYP_PAGE_SIZE, flags); + if (!(*inputarg)) + return -ENOMEM; + + if (hv_root_partition) { + outputarg = (void **)this_cpu_ptr(hyperv_pcpu_output_arg); + *outputarg = (char *)(*inputarg) + HV_HYP_PAGE_SIZE; + } + + msr_vp_index = hv_get_register(HV_REGISTER_VP_INDEX); + + hv_vp_index[cpu] = msr_vp_index; + + if (msr_vp_index > hv_max_vp_index) + hv_max_vp_index = msr_vp_index; + + return 0; +} + +int hv_common_cpu_die(unsigned int cpu) +{ + unsigned long flags; + void **inputarg, **outputarg; + void *mem; + + local_irq_save(flags); + + inputarg = (void **)this_cpu_ptr(hyperv_pcpu_input_arg); + mem = *inputarg; + *inputarg = NULL; + + if (hv_root_partition) { + outputarg = (void **)this_cpu_ptr(hyperv_pcpu_output_arg); + *outputarg = NULL; + } + + local_irq_restore(flags); + + kfree(mem); + + return 0; +} /* Bit mask of the extended capability to query: see HV_EXT_CAPABILITY_xxx */ bool hv_query_ext_cap(u64 cap_query) diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h index bd79b48cfe07..f5fd88eedaed 100644 --- a/include/asm-generic/mshyperv.h +++ b/include/asm-generic/mshyperv.h @@ -37,6 +37,9 @@ struct ms_hyperv_info { }; extern struct ms_hyperv_info ms_hyperv; +extern void __percpu **hyperv_pcpu_input_arg; +extern void __percpu **hyperv_pcpu_output_arg; + extern u64 hv_do_hypercall(u64 control, void *inputaddr, void *outputaddr); extern u64 hv_do_fast_hypercall8(u16 control, u64 input8); @@ -165,6 +168,11 @@ extern void __percpu **hyperv_pcpu_input_arg; /* Sentinel value for an uninitialized entry in hv_vp_index array */ #define VP_INVAL U32_MAX +int __init hv_common_init(void); +void __init hv_common_free(void); +int hv_common_cpu_init(unsigned int cpu); +int hv_common_cpu_die(unsigned int cpu); + void *hv_alloc_hyperv_page(void); void *hv_alloc_hyperv_zeroed_page(void); void hv_free_hyperv_page(unsigned long addr); From patchwork Thu Nov 4 12:54:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550922 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=TAlzDycp; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNvJ3j1vz9sPf for ; Thu, 4 Nov 2021 23:57:00 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIU-0007RB-Rh; Thu, 04 Nov 2021 12:56:50 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHL-0004nz-Ie for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:39 +0000 Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 4B1163F1C2 for ; Thu, 4 Nov 2021 12:55:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030537; bh=+1sTJYpbXVhCYRpXB8+ZpK/6/U8jZMcjFPDTog3cH4I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TAlzDycpEBUBwXyp5D6QhsNbLDtSJ2P3k8CqVbl3gDoThgPZ3HDzvcqMkAR17it71 nesYE22NAJkIeJs5O+25IZm6ugO/xr3xN5lcWoGkewHS1l41ONsP9lIQzjJP/SK4nw k3kmLjh0guZGNBfVNEBZmKbQM8GZNs5+ODtWgBnbOL+3jMuqPgcptD8u8X6TEiWNhS K7s4laW3pmFBHHb25Uji+Ik95KaEB6tN3ISwh98d7C4ml8RGTU7dLq13Z3KA2PHJJF c6vxv4HhKjj7sKA0TIMIM3BehhwNt4QtbK7gBSTG+d4nyWLSqGvhC3ZK+vpw/zwXLU FUnpmvFoJqxiA== Received: by mail-pl1-f199.google.com with SMTP id g20-20020a170902869400b0014002b0f5bcso3137301plo.18 for ; Thu, 04 Nov 2021 05:55:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+1sTJYpbXVhCYRpXB8+ZpK/6/U8jZMcjFPDTog3cH4I=; b=S4lHYywGGZykpqIlHutybBNxxV5TBKVWcQrnWPL+s1jNYUzG+qQXajtyOqhjDvz+ew 4PzjlChNuIIbNxy+pEsZRef0LkBYqCeSXuCZ7vaCmy2AHpLJlhxt8xic/HZGwORMYXE9 1GMJBiSDWI8A373J3g7JaSmmHHh0C8XS754vAWYPSlHkaItbyPdm7HQBNjq8PwLUGPzA 51YS6X7P8Aa3W78VDquXQWU4YiE23g4az6pC7cBQQYH5FAv8Kdhtglxz5pzleyMhu0d4 9YWB6kOqd7ndIA9sZ4aiglenYejMtEUCcARv8Iwt8SkjNJbV7JvH5mvpQAGz/oZXiMQj TDdw== X-Gm-Message-State: AOAM531vnZHkUfk3v/VVyra6tl6l+k8FnOJ3v7+HNb0XSoQ5Cy4Rz2mH prPpkcxlDprzELOzhovXQVV57eDQbUjFfJFN94oI0ppE58TELJth2kwn5r0ROppSBaWcwjzwyPT KGF7EMakTA0z2ORNTXuNUZ3Ca01iMSBHhKlDVqbMUxg== X-Received: by 2002:a63:d80c:: with SMTP id b12mr38942042pgh.331.1636030535147; Thu, 04 Nov 2021 05:55:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwRmVZIxleC1cG9/ZymiJMfQN5aB9OCzePJz3YjseaVsRKFgFRsK832ueL2jwItjckieaFX4w== X-Received: by 2002:a63:d80c:: with SMTP id b12mr38942027pgh.331.1636030534890; Thu, 04 Nov 2021 05:55:34 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:34 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 28/41] Drivers: hv: Add arch independent default functions for some Hyper-V handlers Date: Thu, 4 Nov 2021 06:54:36 -0600 Message-Id: <20211104125449.16540-29-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 Architecture independent Hyper-V code calls various arch-specific handlers when needed. To aid in supporting multiple architectures, provide weak defaults that can be overridden by arch-specific implementations where appropriate. But when arch-specific overrides aren't needed or haven't been implemented yet for a particular architecture, these stubs reduce the amount of clutter under arch/. No functional change. Signed-off-by: Michael Kelley Link: https://lore.kernel.org/r/1626287687-2045-3-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (backported from commit 9d7cf2c9675838c12cd5cf5a4ebe2ba41bd78a44) Signed-off-by: Tim Gardner [rtg - minor context adjustment, added hv_is_isolation_supported() definition to include/asm-generic/mshyperv.h] --- arch/x86/hyperv/hv_init.c | 1 - arch/x86/kernel/cpu/mshyperv.c | 6 ----- drivers/hv/hv_common.c | 49 ++++++++++++++++++++++++++++++++++ include/asm-generic/mshyperv.h | 1 + 4 files changed, 50 insertions(+), 7 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c index 08284bfca479..4924d8c03228 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -410,7 +410,6 @@ void hyperv_cleanup(void) hypercall_msr.as_uint64 = 0; wrmsrl(HV_X64_MSR_REFERENCE_TSC, hypercall_msr.as_uint64); } -EXPORT_SYMBOL_GPL(hyperv_cleanup); void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die) { diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c index ea7091596d73..44891430ea1c 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -60,14 +60,12 @@ void hv_setup_vmbus_handler(void (*handler)(void)) { vmbus_handler = handler; } -EXPORT_SYMBOL_GPL(hv_setup_vmbus_handler); void hv_remove_vmbus_handler(void) { /* We have no way to deallocate the interrupt gate */ vmbus_handler = NULL; } -EXPORT_SYMBOL_GPL(hv_remove_vmbus_handler); /* * Routines to do per-architecture handling of stimer0 @@ -102,25 +100,21 @@ void hv_setup_kexec_handler(void (*handler)(void)) { hv_kexec_handler = handler; } -EXPORT_SYMBOL_GPL(hv_setup_kexec_handler); void hv_remove_kexec_handler(void) { hv_kexec_handler = NULL; } -EXPORT_SYMBOL_GPL(hv_remove_kexec_handler); void hv_setup_crash_handler(void (*handler)(struct pt_regs *regs)) { hv_crash_handler = handler; } -EXPORT_SYMBOL_GPL(hv_setup_crash_handler); void hv_remove_crash_handler(void) { hv_crash_handler = NULL; } -EXPORT_SYMBOL_GPL(hv_remove_crash_handler); #ifdef CONFIG_KEXEC_CORE static void hv_machine_shutdown(void) diff --git a/drivers/hv/hv_common.c b/drivers/hv/hv_common.c index caba4f728987..cac9c6bfc653 100644 --- a/drivers/hv/hv_common.c +++ b/drivers/hv/hv_common.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -202,3 +203,51 @@ bool hv_query_ext_cap(u64 cap_query) return hv_extended_cap & cap_query; } EXPORT_SYMBOL_GPL(hv_query_ext_cap); + +/* These __weak functions provide default "no-op" behavior and + * may be overridden by architecture specific versions. Architectures + * for which the default "no-op" behavior is sufficient can leave + * them unimplemented and not be cluttered with a bunch of stub + * functions in arch-specific code. + */ + +bool __weak hv_is_isolation_supported(void) +{ + return false; +} +EXPORT_SYMBOL_GPL(hv_is_isolation_supported); + +void __weak hv_setup_vmbus_handler(void (*handler)(void)) +{ +} +EXPORT_SYMBOL_GPL(hv_setup_vmbus_handler); + +void __weak hv_remove_vmbus_handler(void) +{ +} +EXPORT_SYMBOL_GPL(hv_remove_vmbus_handler); + +void __weak hv_setup_kexec_handler(void (*handler)(void)) +{ +} +EXPORT_SYMBOL_GPL(hv_setup_kexec_handler); + +void __weak hv_remove_kexec_handler(void) +{ +} +EXPORT_SYMBOL_GPL(hv_remove_kexec_handler); + +void __weak hv_setup_crash_handler(void (*handler)(struct pt_regs *regs)) +{ +} +EXPORT_SYMBOL_GPL(hv_setup_crash_handler); + +void __weak hv_remove_crash_handler(void) +{ +} +EXPORT_SYMBOL_GPL(hv_remove_crash_handler); + +void __weak hyperv_cleanup(void) +{ +} +EXPORT_SYMBOL_GPL(hyperv_cleanup); diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h index f5fd88eedaed..f34a7f7be4e9 100644 --- a/include/asm-generic/mshyperv.h +++ b/include/asm-generic/mshyperv.h @@ -231,6 +231,7 @@ static inline int cpumask_to_vpset(struct hv_vpset *vpset, void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die); bool hv_is_hyperv_initialized(void); bool hv_is_hibernation_supported(void); +bool hv_is_isolation_supported(void); void hyperv_cleanup(void); bool hv_query_ext_cap(u64 cap_query); #else /* CONFIG_HYPERV */ From patchwork Thu Nov 4 12:54:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550921 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=e0QQYoNP; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNvF1Bv4z9sPf for ; Thu, 4 Nov 2021 23:56:57 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIS-0007K8-V0; Thu, 04 Nov 2021 12:56:49 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHL-0004os-KM for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:39 +0000 Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 0969E3F33C for ; Thu, 4 Nov 2021 12:55:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030538; bh=B2/yb8x8DAHMsf2XKSvjfCITKzvpdZb6c/nf7VINER8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=e0QQYoNPLGpvAZsbOJPn28SdyCbPUesIbEthP2QQ6c/Vo2GUVwON+UlxzzCib9V/8 y2K5A20+J4sgTz3pgHHrInPkR7urxewy/q6qb8m3akr1v7gBuAKJ6ZGxQZD+/97hWk ZBGnc/9/wd3xazbGwR95zjfx0LiyD3zJ+LVQ4/EB7dl4wzkrLKnilDSllTX8IORRYL Uu+9sZkQF9v3qYCf0LQ+skCzA5sTTNoky4lG7aqDcSF4gvcr2rEIjX1Ey3s4J8ot0p 8arPvvsAjejoBrqtfY/BJFXD8blz8qA9nOXcPoylXIbOlDAZg1GJyqe+fN3NnqCv+E IiNPc5m1tbXAA== Received: by mail-pl1-f198.google.com with SMTP id z3-20020a170903018300b0014224dca4a1so2390968plg.0 for ; Thu, 04 Nov 2021 05:55:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=B2/yb8x8DAHMsf2XKSvjfCITKzvpdZb6c/nf7VINER8=; b=G8C6EVaAvg9nUJdNhlEq/UKgjzvnALSwPHADt5ir7f1xeORfAla72zm34o+oSbY+zX IdarVvo8Z+/oTF/LGswLpVE2Ia86E/+nHwOpSsogv33aawMvFIL+5Ihf27Fzt/grFozz jNVBC1TGZ98s3hTl84YhKc0WoE4XrmOzelbFe23BSsCXvhAk5NMf4AFnrtyg5oLjCWaA kC931hhxYb9LF6GTqMIp2DanN+ipe4CGkRzam8/ie12C+/Waz6l/1fREcC9p+H4WUNAU usTx9SSgMWcyB2IjKE5eqQyz/yoXwkEtJsBc9rVohEtRZEpxJX/BVZP4n+Qg8DZYbVss LVsQ== X-Gm-Message-State: AOAM531I/u85wJPqyn1CaekigdUn3KRxAxm2AcDe4DA9ga2n/FZfRKfL jtOy43r03jFiYCvYB3Gts0mEkH82/pmLOxxXmemQdch3iuKPtyNLSdDKwALJyNuG/nYQIml/PKK YWURIHH2gbj1lAn3eLcFnyjZmJCPow0fNLMaSNSgSkg== X-Received: by 2002:a17:90b:1c06:: with SMTP id oc6mr21669145pjb.126.1636030536294; Thu, 04 Nov 2021 05:55:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwEeOKtym+BJ7TtzUJ1mqH3lIWB/4MTm4b7OHHmG+vSbvcpXltREq9bI6Xqrlad3V8nQToFWQ== X-Received: by 2002:a17:90b:1c06:: with SMTP id oc6mr21669122pjb.126.1636030536051; Thu, 04 Nov 2021 05:55:36 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:35 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 29/41] drivers: hv: Decouple Hyper-V clock/timer code from VMbus drivers Date: Thu, 4 Nov 2021 06:54:37 -0600 Message-Id: <20211104125449.16540-30-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 Hyper-V clock/timer code in hyperv_timer.c is mostly independent from other VMbus drivers, but building for ARM64 without hyperv_timer.c shows some remaining entanglements. A default implementation of hv_read_reference_counter can just read a Hyper-V synthetic register and be independent of hyperv_timer.c, so move this code out and into hv_common.c. Then it can be used by the timesync driver even if hyperv_timer.c isn't built on a particular architecture. If hyperv_timer.c *is* built, it can override with a faster implementation. Also provide stubs for stimer functions called by the VMbus driver when hyperv_timer.c isn't built. No functional changes. Signed-off-by: Michael Kelley Link: https://lore.kernel.org/r/1626220906-22629-1-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (backported from commit 31e5e64694cf9879e63b2802007fa934f4131126) Signed-off-by: Tim Gardner [rtg - minor context differences] --- drivers/clocksource/hyperv_timer.c | 3 --- drivers/hv/hv_common.c | 14 ++++++++++++++ drivers/hv/hv_util.c | 5 ----- include/asm-generic/mshyperv.h | 1 + include/clocksource/hyperv_timer.h | 11 +++++++++-- 5 files changed, 24 insertions(+), 10 deletions(-) diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c index d1510d43211b..169f19ec5f2a 100644 --- a/drivers/clocksource/hyperv_timer.c +++ b/drivers/clocksource/hyperv_timer.c @@ -361,9 +361,6 @@ EXPORT_SYMBOL_GPL(hv_stimer_global_cleanup); * Hyper-V and 32-bit x86. The TSC reference page version is preferred. */ -u64 (*hv_read_reference_counter)(void); -EXPORT_SYMBOL_GPL(hv_read_reference_counter); - static union { struct ms_hyperv_tsc_page page; u8 reserved[PAGE_SIZE]; diff --git a/drivers/hv/hv_common.c b/drivers/hv/hv_common.c index cac9c6bfc653..8caffed7261a 100644 --- a/drivers/hv/hv_common.c +++ b/drivers/hv/hv_common.c @@ -204,6 +204,20 @@ bool hv_query_ext_cap(u64 cap_query) } EXPORT_SYMBOL_GPL(hv_query_ext_cap); +/* + * Default function to read the Hyper-V reference counter, independent + * of whether Hyper-V enlightened clocks/timers are being used. But on + * architectures where it is used, Hyper-V enlightenment code in + * hyperv_timer.c may override this function. + */ +static u64 __hv_read_ref_counter(void) +{ + return hv_get_register(HV_REGISTER_TIME_REF_COUNT); +} + +u64 (*hv_read_reference_counter)(void) = __hv_read_ref_counter; +EXPORT_SYMBOL_GPL(hv_read_reference_counter); + /* These __weak functions provide default "no-op" behavior and * may be overridden by architecture specific versions. Architectures * for which the default "no-op" behavior is sufficient can leave diff --git a/drivers/hv/hv_util.c b/drivers/hv/hv_util.c index 1b914e418e41..83d6a1d80172 100644 --- a/drivers/hv/hv_util.c +++ b/drivers/hv/hv_util.c @@ -17,7 +17,6 @@ #include #include #include -#include #include #include "hyperv_vmbus.h" @@ -681,10 +680,6 @@ static struct ptp_clock *hv_ptp_clock; static int hv_timesync_init(struct hv_util_service *srv) { - /* TimeSync requires Hyper-V clocksource. */ - if (!hv_read_reference_counter) - return -ENODEV; - spin_lock_init(&host_ts.lock); INIT_WORK(&adj_time_work, hv_set_host_time); diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h index f34a7f7be4e9..d59be5fb5315 100644 --- a/include/asm-generic/mshyperv.h +++ b/include/asm-generic/mshyperv.h @@ -164,6 +164,7 @@ extern u32 *hv_vp_index; extern u32 hv_max_vp_index; extern void __percpu **hyperv_pcpu_input_arg; +extern u64 (*hv_read_reference_counter)(void); /* Sentinel value for an uninitialized entry in hv_vp_index array */ #define VP_INVAL U32_MAX diff --git a/include/clocksource/hyperv_timer.h b/include/clocksource/hyperv_timer.h index b6774aa5a4b8..b3f5d73ae1d6 100644 --- a/include/clocksource/hyperv_timer.h +++ b/include/clocksource/hyperv_timer.h @@ -20,6 +20,8 @@ #define HV_MAX_MAX_DELTA_TICKS 0xffffffff #define HV_MIN_DELTA_TICKS 1 +#ifdef CONFIG_HYPERV_TIMER + /* Routines called by the VMbus driver */ extern int hv_stimer_alloc(bool have_percpu_irqs); extern int hv_stimer_cleanup(unsigned int cpu); @@ -28,8 +30,6 @@ extern void hv_stimer_legacy_cleanup(unsigned int cpu); extern void hv_stimer_global_cleanup(void); extern void hv_stimer0_isr(void); -#ifdef CONFIG_HYPERV_TIMER -extern u64 (*hv_read_reference_counter)(void); extern void hv_init_clocksource(void); extern struct ms_hyperv_tsc_page *hv_get_tsc_page(void); @@ -100,6 +100,13 @@ static inline u64 hv_read_tsc_page_tsc(const struct ms_hyperv_tsc_page *tsc_pg, { return U64_MAX; } + +static inline int hv_stimer_cleanup(unsigned int cpu) { return 0; } +static inline void hv_stimer_legacy_init(unsigned int cpu, int sint) {} +static inline void hv_stimer_legacy_cleanup(unsigned int cpu) {} +static inline void hv_stimer_global_cleanup(void) {} +static inline void hv_stimer0_isr(void) {} + #endif /* CONFIG_HYPERV_TIMER */ #endif From patchwork Thu Nov 4 12:54:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550923 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=DoGcwEnA; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNvL4TSPz9sPf for ; Thu, 4 Nov 2021 23:57:02 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIX-0007Yh-7X; Thu, 04 Nov 2021 12:56:53 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHM-0004pN-Jl for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:40 +0000 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id B2AD83F1F5 for ; Thu, 4 Nov 2021 12:55:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030538; bh=ttuca73pOTrKDl7Qp7HWBJjcHVz5u6TTUoR74cTP01E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=DoGcwEnAufRWylJ0isIQtEcCyiUwq9lKUVKxcG+F61U+8AqrqFwcwAeeQeplZmrtr wnI2WZkUIycDmrS+QqkVQ/koSJ43upeKTRh1WIakIk/yfcBzEumbaXkjDaG6SOA0mJ /TCjl1kgpCO2bySRH7NE0npU87vGfxisQQBh5d3MVebw94pxiIlNu3eMYZ/PPy8Jui POGDs5YZBSL7UtSNeM7Ok24zo7Iyp5GXM/BKJ1do67hEmc7j0z9ICTu/3yJWetq2/m StMyUKKbLJ5ed/gWsYgf9EZVG9nm7dcjWt+jh9YZlwT3LOBEwMYQghx+JZCmqmbLhF SeZgaQsTE+ikw== Received: by mail-pg1-f197.google.com with SMTP id u5-20020a63d3450000b029023a5f6e6f9bso3619883pgi.21 for ; Thu, 04 Nov 2021 05:55:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ttuca73pOTrKDl7Qp7HWBJjcHVz5u6TTUoR74cTP01E=; b=QtVq0HAgpUEVQurM9s6Qnbtlj6YYJQO2A3QkU1evvRDC7kN+Aulz1IvJggmrshqm4g HDXEoPmz5pRl5hVpVbzggUveK88UD+4dhnOEP8znVapiJSJVDcYxyBdK5PnE84kvNprI dNebNziNCh8CTj8Bb96vxJF+xam9+zjTVbvAJ5obrr/ug0tySy2bJBHm+ZwPDDYy7qLS YG444dTyDRouveSB6V/yKdSqR8JeaqRWzuJLDjwG+c/N9lH4Vqcz3BdPfW9F1YKZpST9 Q7yMoc8lnGPyqr+NtMmw8Ej+j0x3iutKtBsuu0MyRWLcDlYF2FUEiOdBieOqMt3E7Mjd 6bEw== X-Gm-Message-State: AOAM530Q/3yboxVy1VtUNk0cWel7zO4dfvNqvCkchNOLYGznYpDUp7D8 4RXrjJb4gdZAUHB46OmnVna8x88Qx8QSNaB2JP9o5brt9NfmYqWQdwFoIN/8TMiDlnxEvoMVREK lmusCyWqrGf6qbmOJbKjOjCcCcQekwgkYdSttgalSiQ== X-Received: by 2002:a17:90a:6782:: with SMTP id o2mr22203717pjj.165.1636030537067; Thu, 04 Nov 2021 05:55:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwk8tZj6kmZ6vQB7v8O68g+f1L8xqJrUQFB9nD0lZe3TdMZXGHI9bP1vJReUqH9gUs8jYFqfg== X-Received: by 2002:a17:90a:6782:: with SMTP id o2mr22203695pjj.165.1636030536802; Thu, 04 Nov 2021 05:55:36 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:36 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 30/41] Drivers: hv: Move Hyper-V misc functionality to arch-neutral code Date: Thu, 4 Nov 2021 06:54:38 -0600 Message-Id: <20211104125449.16540-31-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 The check for whether hibernation is possible, and the enabling of Hyper-V panic notification during kexec, are both architecture neutral. Move the code from under arch/x86 and into drivers/hv/hv_common.c where it can also be used for ARM64. No functional change. Signed-off-by: Michael Kelley Link: https://lore.kernel.org/r/1626287687-2045-4-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (backported from commit 6dc77fa5ac2cf26f846a51492dbe42526e26d0f2) Signed-off-by: Tim Gardner [rtg - minor context differences, dropped hv_is_hibernation_supported() from arch/arm64/hyperv/mshyperv.c] --- arch/arm64/hyperv/mshyperv.c | 6 ------ arch/x86/hyperv/hv_init.c | 7 +------ arch/x86/kernel/cpu/mshyperv.c | 10 ---------- drivers/hv/hv_common.c | 17 +++++++++++++++++ 4 files changed, 18 insertions(+), 22 deletions(-) diff --git a/arch/arm64/hyperv/mshyperv.c b/arch/arm64/hyperv/mshyperv.c index 1748f99ca65b..1b365fd8f481 100644 --- a/arch/arm64/hyperv/mshyperv.c +++ b/arch/arm64/hyperv/mshyperv.c @@ -146,12 +146,6 @@ bool hv_is_hyperv_initialized(void) } EXPORT_SYMBOL_GPL(hv_is_hyperv_initialized); -bool hv_is_hibernation_supported(void) -{ - return false; -} -EXPORT_SYMBOL_GPL(hv_is_hibernation_supported); - bool hv_is_isolation_supported(void) { return false; diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c index 4924d8c03228..34892c078b19 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -7,9 +7,9 @@ * Author : K. Y. Srinivasan */ -#include #include #include +#include #include #include #include @@ -465,8 +465,3 @@ bool hv_is_hyperv_initialized(void) } EXPORT_SYMBOL_GPL(hv_is_hyperv_initialized); -bool hv_is_hibernation_supported(void) -{ - return acpi_sleep_state_supported(ACPI_STATE_S4); -} -EXPORT_SYMBOL_GPL(hv_is_hibernation_supported); diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c index 44891430ea1c..f4c6fc790494 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -286,16 +286,6 @@ static void __init ms_hyperv_init_platform(void) cpuid_eax(HYPERV_CPUID_NESTED_FEATURES); } - /* - * Hyper-V expects to get crash register data or kmsg when - * crash enlightment is available and system crashes. Set - * crash_kexec_post_notifiers to be true to make sure that - * calling crash enlightment interface before running kdump - * kernel. - */ - if (ms_hyperv.misc_features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) - crash_kexec_post_notifiers = true; - #ifdef CONFIG_X86_LOCAL_APIC if (ms_hyperv.features & HV_ACCESS_FREQUENCY_MSRS && ms_hyperv.misc_features & HV_FEATURE_FREQUENCY_MSRS_AVAILABLE) { diff --git a/drivers/hv/hv_common.c b/drivers/hv/hv_common.c index 8caffed7261a..01b88b8d42fe 100644 --- a/drivers/hv/hv_common.c +++ b/drivers/hv/hv_common.c @@ -13,6 +13,7 @@ */ #include +#include #include #include #include @@ -70,6 +71,16 @@ int __init hv_common_init(void) { int i; + /* + * Hyper-V expects to get crash register data or kmsg when + * crash enlightment is available and system crashes. Set + * crash_kexec_post_notifiers to be true to make sure that + * calling crash enlightment interface before running kdump + * kernel. + */ + if (ms_hyperv.misc_features & HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) + crash_kexec_post_notifiers = true; + /* * Allocate the per-CPU state for the hypercall input arg. * If this allocation fails, we will not be able to setup @@ -218,6 +229,12 @@ static u64 __hv_read_ref_counter(void) u64 (*hv_read_reference_counter)(void) = __hv_read_ref_counter; EXPORT_SYMBOL_GPL(hv_read_reference_counter); +bool hv_is_hibernation_supported(void) +{ + return !hv_root_partition && acpi_sleep_state_supported(ACPI_STATE_S4); +} +EXPORT_SYMBOL_GPL(hv_is_hibernation_supported); + /* These __weak functions provide default "no-op" behavior and * may be overridden by architecture specific versions. Architectures * for which the default "no-op" behavior is sufficient can leave From patchwork Thu Nov 4 12:54:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550930 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=LMNG504w; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNvp5pW4z9sPf for ; Thu, 4 Nov 2021 23:57:26 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIw-0000cf-0L; Thu, 04 Nov 2021 12:57:18 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHT-0004xg-Vr for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:47 +0000 Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id D82EE3F1CD for ; Thu, 4 Nov 2021 12:55:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030545; bh=FS3S0gOgcerEd2SOZM1JoRmdwo6ZmTXC+/IWklRBThI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=LMNG504wLmKN1vf8WmbDoq987Gb01SD8wByGYFREndX4qZcuE6KfWd3/812xC+q3t NBxbxBTwf0XeTRjMUwuCSfXGOpg0KBUHYJqCyyJsCTUmzGA5aCdGCqmHMMJRl8uXnH Nq0gbWVhuKO3p8GRnCaEAn2Bk4AOMidN5oUd6ntfkEGXP+iGtPsAThluZbgmpKdkq4 9k8as0JpPGVHCMy0iKZnyLQENzzN/rps2zZhWtjVssxemteMWY22tAbzwGl+xiuyLd Hbn1Gqp7vJNLNSNHydKOC5P495DXtoRwniGJP6Z7T9VqiwgFybvKMPeZvX1ZbQ6zE3 laBs1gkG7dsqg== Received: by mail-pf1-f197.google.com with SMTP id a84-20020a621a57000000b00480fcb384a7so3727654pfa.20 for ; Thu, 04 Nov 2021 05:55:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FS3S0gOgcerEd2SOZM1JoRmdwo6ZmTXC+/IWklRBThI=; b=sGAsghUgdv7V0wS959mN0RqP7Lxv1h6iGOoN3tWfxcAv5UfCXAtXjRFWudqj4l7tYs Vzp5jFPYlbJs28vNtTdg555ZD/HYwpDSLqidqGbno7V4Zo0GRetNlQ6m8gSqXrtagPTm ryFCb8dOec9LSQjf+4lVfqRhqnOS183mqlR459slmUcQ5GzJYgLZ/VC2RglqQfbSrZQh po3k8rjDiGx+LKKU11/8jDkeMzArZuuutUvBWTgGMtR8xHyDOHV3kodH04+Ge0rxC35N XjIL2Erp2MwaynuvlKDWSpHM2etZtg89snFxtLjq0AQ36CT6lslkPgCG7fbC8te/6xkG JwDg== X-Gm-Message-State: AOAM532+SfSFqtq8rZpUjl5h1oxiOZEbjW1gtogHICR2JszG3M488otL wYc7S/s/n+yPmhyc7xJbjiZst95SvteQmwA2ZhaLgaLrFUrODj/wNdbCFU8Rltz5x/r3tdL/AkA Lq5c0aEDf1k8NOwJ0cB/X66U5fYMra+SUsQcJLaJ8jA== X-Received: by 2002:a17:90b:4d12:: with SMTP id mw18mr21924116pjb.174.1636030537783; Thu, 04 Nov 2021 05:55:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzrZErxtzFVNqaz0rDYhHpCMABEHfyOlf2G8+ztfi4JApT0rxhB1uYMozIu25LiqQgSlSPv8w== X-Received: by 2002:a17:90b:4d12:: with SMTP id mw18mr21924097pjb.174.1636030537540; Thu, 04 Nov 2021 05:55:37 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:37 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 31/41] PCI: Introduce domain_nr in pci_host_bridge Date: Thu, 4 Nov 2021 06:54:39 -0600 Message-Id: <20211104125449.16540-32-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Boqun Feng BugLink: https://bugs.launchpad.net/bugs/1949770 Currently we retrieve the PCI domain number of the host bridge from the bus sysdata (or pci_config_window if PCI_DOMAINS_GENERIC=y). Actually we have the information at PCI host bridge probing time, and it makes sense that we store it into pci_host_bridge. One benefit of doing so is the requirement for supporting PCI on Hyper-V for ARM64, because the host bridge of Hyper-V doesn't have pci_config_window, whereas ARM64 is a PCI_DOMAINS_GENERIC=y arch, so we cannot retrieve the PCI domain number from pci_config_window on ARM64 Hyper-V guest. As the preparation for ARM64 Hyper-V PCI support, we introduce the domain_nr in pci_host_bridge and a sentinel value to allow drivers to set domain numbers properly at probing time. Currently CONFIG_PCI_DOMAINS_GENERIC=y archs are only users of this newly-introduced field. Link: https://lore.kernel.org/r/20210726180657.142727-2-boqun.feng@gmail.com Signed-off-by: Boqun Feng Signed-off-by: Lorenzo Pieralisi Acked-by: Bjorn Helgaas (cherry picked from commit 15d82ca23c996d50062286d27ed6a42a8105c04a) Signed-off-by: Tim Gardner --- drivers/pci/probe.c | 6 +++++- include/linux/pci.h | 11 +++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 04664d4fe4be..4f7db14133a2 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -595,6 +595,7 @@ static void pci_init_host_bridge(struct pci_host_bridge *bridge) bridge->native_pme = 1; bridge->native_ltr = 1; bridge->native_dpc = 1; + bridge->domain_nr = PCI_DOMAIN_NR_NOT_SET; device_initialize(&bridge->dev); } @@ -916,7 +917,10 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge) bus->ops = bridge->ops; bus->number = bus->busn_res.start = bridge->busnr; #ifdef CONFIG_PCI_DOMAINS_GENERIC - bus->domain_nr = pci_bus_find_domain_nr(bus, parent); + if (bridge->domain_nr == PCI_DOMAIN_NR_NOT_SET) + bus->domain_nr = pci_bus_find_domain_nr(bus, parent); + else + bus->domain_nr = bridge->domain_nr; #endif b = pci_find_bus(pci_domain_nr(bus), bridge->busnr); diff --git a/include/linux/pci.h b/include/linux/pci.h index b38512271f1c..f8393e38d6b5 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -529,6 +529,16 @@ static inline int pci_channel_offline(struct pci_dev *pdev) return (pdev->error_state != pci_channel_io_normal); } +/* + * Currently in ACPI spec, for each PCI host bridge, PCI Segment + * Group number is limited to a 16-bit value, therefore (int)-1 is + * not a valid PCI domain number, and can be used as a sentinel + * value indicating ->domain_nr is not set by the driver (and + * CONFIG_PCI_DOMAINS_GENERIC=y archs will set it with + * pci_bus_find_domain_nr()). + */ +#define PCI_DOMAIN_NR_NOT_SET (-1) + struct pci_host_bridge { struct device dev; struct pci_bus *bus; /* Root bus */ @@ -536,6 +546,7 @@ struct pci_host_bridge { struct pci_ops *child_ops; void *sysdata; int busnr; + int domain_nr; struct list_head windows; /* resource_entry */ struct list_head dma_ranges; /* dma ranges resource list */ u8 (*swizzle_irq)(struct pci_dev *, u8 *); /* Platform IRQ swizzler */ From patchwork Thu Nov 4 12:54:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550924 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=RVDosDCu; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNvV1KH5z9sPf for ; Thu, 4 Nov 2021 23:57:10 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micId-0007tY-GO; Thu, 04 Nov 2021 12:56:59 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHN-0004r8-EH for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:41 +0000 Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 253AB3F33C for ; Thu, 4 Nov 2021 12:55:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030540; bh=QwbNoQw6kfNfTnr95tNlBU/F4vg9qnVFrrL13pC7JFM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RVDosDCuzySRFf0/oPzQOBzmPY3Clhm1mfimBYcp4ldTX92vJzqDwQOYns3uzOrZd 3xpx1i+NWK/V8DUtQd/DHY0pocI+Bty/5R3yhf7ipo6PdZcCewR8EDhbrv+Fnexxwe TFO93jT5lW9OfFjwSMx9P+Hx6u32OMjkMf7RpvzjRr/6FPHyrzf3jvcIOkRpmJrQ7e qbeOfi+JliZ1DrB7nBT8MWBq0EVPFO2NNiZDHMe39iupF5xV5wCEdf5c4yGDdsHUiA 2xgmRK0LK8eWOPixoeAhhXXoMxCFJnPW+ce4IFTrj1/EWfJjFPdUx9DL1xvMiHSVVY 99OYD0Q1vDhCA== Received: by mail-pg1-f200.google.com with SMTP id i25-20020a631319000000b002cce0a43e94so3712065pgl.0 for ; Thu, 04 Nov 2021 05:55:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QwbNoQw6kfNfTnr95tNlBU/F4vg9qnVFrrL13pC7JFM=; b=URL6kuXdRCKGVM1U7YLTusachHIrYiTT6rJlAdsRfB64IhbyHQj3fYlWy/UdyEtc80 87bV/XxEu33iQJeEo6Ez9zkMjOcbs1NVOHHn0koPBVYbhXfgdpstzLRi6lsbvcgGsAS4 6e45mlUlO7dMZMG4HGS0DBDUxlnAUZBoYGoV/7RFWUOaW5WOA4z28ChYvi/LZHuV9NCQ StW7bRxy46DN0zUhXhKNiwchSt+BNIQxE6mEf884GN+9PEc/il7BT4/UvMhZT4t6Hgd/ cRhILEVQE49PZuaSYd9ZFMwx9hScUgfjaMX+Yjjhl1kNV9lyFxguN/LvMMnsQ7nkOWUl TuiA== X-Gm-Message-State: AOAM5322jo20yShnoJUGS+FG3VCwGXnZsQOUQOXsZ1UC5B5cVQtaJc+j U6qqWjz4wmkHntO39vpE0TlKiZt3u4QzV8W7teXRnqjf7QlB+N30oiYtf6Co+B+JqJa/rclT5fb GjerC+4DsQRqToOmND+dgWx/H+xnEoVGbRX11DUpxYg== X-Received: by 2002:a63:684:: with SMTP id 126mr26653219pgg.213.1636030538474; Thu, 04 Nov 2021 05:55:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzaU/Z/bZrwi6/gPfgsQu8yukxq3uFRL2MGg+pMYbmUrEFLcQjZMXChSODb2oM0kygTIzDpnQ== X-Received: by 2002:a63:684:: with SMTP id 126mr26653206pgg.213.1636030538272; Thu, 04 Nov 2021 05:55:38 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:37 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 32/41] PCI: Support populating MSI domains of root buses via bridges Date: Thu, 4 Nov 2021 06:54:40 -0600 Message-Id: <20211104125449.16540-33-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Boqun Feng BugLink: https://bugs.launchpad.net/bugs/1949770 Currently, at probing time, the MSI domains of root buses are populated if either the information of MSI domain is available from firmware (DT or ACPI), or arch-specific sysdata is used to pass the fwnode of the MSI domain. These two conditions don't cover all, e.g. Hyper-V virtual PCI on ARM64, which doesn't have the MSI information in the firmware and couldn't use arch-specific sysdata because running on an architecture with PCI_DOMAINS_GENERIC=y. To support populating MSI domains of the root buses at the probing when neither of the above condition is true, the ->msi_domain of the corresponding bridge device is used: in pci_host_bridge_msi_domain(), which should return the MSI domain of the root bus, the ->msi_domain of the corresponding bridge is fetched first as a potential value of the MSI domain of the root bus. In order to use the approach to populate MSI domains, the driver needs to dev_set_msi_domain() on the bridge before calling pci_register_host_bridge(), and makes sure GENERIC_MSI_IRQ_DOMAIN=y. Another advantage of this new approach is providing an arch-independent way to populate MSI domains, which allows sharing the driver code as much as possible between architectures. Originally-by: Arnd Bergmann Link: https://lore.kernel.org/r/20210726180657.142727-3-boqun.feng@gmail.com Signed-off-by: Boqun Feng Signed-off-by: Lorenzo Pieralisi Acked-by: Bjorn Helgaas (cherry picked from commit 41dd40fd717997085588442821f4463e05c758cf) Signed-off-by: Tim Gardner --- drivers/pci/probe.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 4f7db14133a2..d74be47679a6 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -830,11 +830,15 @@ static struct irq_domain *pci_host_bridge_msi_domain(struct pci_bus *bus) { struct irq_domain *d; + /* If the host bridge driver sets a MSI domain of the bridge, use it */ + d = dev_get_msi_domain(bus->bridge); + /* * Any firmware interface that can resolve the msi_domain * should be called from here. */ - d = pci_host_bridge_of_msi_domain(bus); + if (!d) + d = pci_host_bridge_of_msi_domain(bus); if (!d) d = pci_host_bridge_acpi_msi_domain(bus); From patchwork Thu Nov 4 12:54:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550928 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=EpzwXRCc; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNvh2V5Pz9sPf for ; Thu, 4 Nov 2021 23:57:20 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIo-00009M-UL; Thu, 04 Nov 2021 12:57:10 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHS-0004vl-Dp for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:46 +0000 Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 65CB93F1C2 for ; Thu, 4 Nov 2021 12:55:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030541; bh=8iIK2G9Ngs36K8LuURTXzb8y/Xyv71iK+OjkB6rO/BQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EpzwXRCc2FUrPYtWMk9xsh6udQaMSru3Vq6D9Pi5TzVAeO7kNzOd6tF8gOUJ1E6cc bO7dPFh05LvkJ0pcEs791zOMwKB3iZayYtsULz/e8Vp9pieVgsZM5CpI+9XbzGuz/Q uMQVtkUdO1OhRLltBa3d/ihfVHVoScZh0H3pO9hpY5JtTizEtVfTExMTAJ+IMNGQHT H2TBzqD0P3K6eHKx8QaTwp5QFtPRyWirq0PdZ0OCJs8RKAAbdg2kE3XnMjvdxhffV2 D1VesPpA+O2UY9NH9qnfdRNSembzs+mHiE4gAWfytFOvr5sk8jsz0edQC+TaLUhFQb wrdU1BBwNSDkQ== Received: by mail-pg1-f199.google.com with SMTP id v63-20020a632f42000000b002cc65837088so3693805pgv.1 for ; Thu, 04 Nov 2021 05:55:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8iIK2G9Ngs36K8LuURTXzb8y/Xyv71iK+OjkB6rO/BQ=; b=cEmf4fBK+UY4PjYSsh+PfL6ITDTWx/udfF/Q94tYY0bs4Ppja1yTlcqk5z/r7QFT1s xcr63FifFLpMJKlJ13iSgNqeFqkxL/qb8mwJDaXQX74T3K6sUBNYeIX4OmjXy1GdVabN kNqSwjO29iTahofKua2fPWOyiGJatOu0ckmIHQC8NgrDwISkQ7RbvzUb0sip3DS2ea3q Zs04l2wJRdHLwaENOGNG0l6FxUs0ht8I5xye0K+BNhq1q26bJtZtYN/EZJMcXNYV+K7D 8uopKjHD4EdueCG7qmg4uKXLK+lbX/FL2o/648aigKXzmazzAAjSYpW6v5c7KLS60ry/ 9Vcw== X-Gm-Message-State: AOAM532K479TV+/LR9i3AV0lBHfUkFqjKHQmYTaC23S45lSqwRmfFRy0 ZItmrokfch0LM1+2daCUgKidAtU0O9Qsbas453DzVh/ty9HZ3ZA3ERWv/1KkZoi/NV3CPtqZkOB 8veuBg9y1CTPLf/NOneznw2+653g747q5twbQDyS65w== X-Received: by 2002:a17:902:aa02:b0:13a:6c8f:407f with SMTP id be2-20020a170902aa0200b0013a6c8f407fmr43838624plb.59.1636030539642; Thu, 04 Nov 2021 05:55:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJytCND9lKxaOzDpFUdUK6+3A0pOfnVE16iL8lIAhZorYmcyVZLFHj1wCU/FjDT3upBBqwXwKQ== X-Received: by 2002:a17:902:aa02:b0:13a:6c8f:407f with SMTP id be2-20020a170902aa0200b0013a6c8f407fmr43838606plb.59.1636030539372; Thu, 04 Nov 2021 05:55:39 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:38 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 33/41] arm64: PCI: Restructure pcibios_root_bridge_prepare() Date: Thu, 4 Nov 2021 06:54:41 -0600 Message-Id: <20211104125449.16540-34-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Boqun Feng BugLink: https://bugs.launchpad.net/bugs/1949770 Restructure the pcibios_root_bridge_prepare() as the preparation for supporting cases when no real ACPI device is related to the PCI host bridge. No functional change. Link: https://lore.kernel.org/r/20210726180657.142727-4-boqun.feng@gmail.com Signed-off-by: Boqun Feng Signed-off-by: Lorenzo Pieralisi Acked-by: Catalin Marinas (cherry picked from commit b424d4d4263200459615c87ad8dddaf4bb571a9d) Signed-off-by: Tim Gardner --- arch/arm64/kernel/pci.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/arch/arm64/kernel/pci.c b/arch/arm64/kernel/pci.c index 1006ed2d7c60..5148ae242780 100644 --- a/arch/arm64/kernel/pci.c +++ b/arch/arm64/kernel/pci.c @@ -82,14 +82,19 @@ int acpi_pci_bus_find_domain_nr(struct pci_bus *bus) int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge) { - if (!acpi_disabled) { - struct pci_config_window *cfg = bridge->bus->sysdata; - struct acpi_device *adev = to_acpi_device(cfg->parent); - struct device *bus_dev = &bridge->bus->dev; + struct pci_config_window *cfg; + struct acpi_device *adev; + struct device *bus_dev; - ACPI_COMPANION_SET(&bridge->dev, adev); - set_dev_node(bus_dev, acpi_get_node(acpi_device_handle(adev))); - } + if (acpi_disabled) + return 0; + + cfg = bridge->bus->sysdata; + adev = to_acpi_device(cfg->parent); + bus_dev = &bridge->bus->dev; + + ACPI_COMPANION_SET(&bridge->dev, adev); + set_dev_node(bus_dev, acpi_get_node(acpi_device_handle(adev))); return 0; } From patchwork Thu Nov 4 12:54:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550927 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=K0brZ/87; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNvf5mtfz9sPf for ; Thu, 4 Nov 2021 23:57:18 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIn-0008W9-B5; Thu, 04 Nov 2021 12:57:09 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHS-0004vk-DI for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:46 +0000 Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id EDD933F1C0 for ; Thu, 4 Nov 2021 12:55:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030544; bh=Qn05LZ/wnEDA7koXV2GsGdC0EvMBjRQTxEnR1wa6TSs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=K0brZ/87cJM1MrvGVZI9o5Tfk4z4eqUPI7yYON2GlSuR9AID5cjJ/RjLiiZ8Ev2X4 JU+WY62PIMVvDT9HwHDzVojRNDoinyqnWx/JKfPoQDAqXJFAeEJc3uI3ZEj5n+uOUZ FeaGoM1q6aB7aRGtdFPsscwT4NFnwyJS7tjcINTttEQ+z/3SfHWZfhVJsHNDtm2JcJ /ENHaN+XaQtX+DkPdAldeYY8lhWy8nyTyQ/lFCbYExiU8Hrhei/DHrt8o9MvsnFm+k 1xWA+ASBFh+b0SpKTcOsAQ4hF7ScW4sqURUcy2/prM6iBlp08clQ3lgQ4vB2gnkqsd vj1Vd0t47OBhw== Received: by mail-pg1-f199.google.com with SMTP id p20-20020a63fe14000000b002cc2a31eaf6so3671500pgh.6 for ; Thu, 04 Nov 2021 05:55:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Qn05LZ/wnEDA7koXV2GsGdC0EvMBjRQTxEnR1wa6TSs=; b=QHV3m4U8LIAzxrWhVCq0bvpsEt1HSB1UdIaBpwBkz7z1cM2K960A7dQpvTDqt8ycj3 qqRT40J/7rizo/DP5MlTa2wNY7p0/aV8LuO+x2QB4kdwMhkOo9Nbhp0DEoVdxCCM/Phm PwwqO8r27Klon9Ud/GQmaWN0WxL3r3jVrDRlTvEnQ/gBh+fiEMukAcgtIhUCXxoKR2nR Z43Wd7LL7X7VWU9FLBT7Ks7Hrhh2MyRVYUBajwoZD/eJxhaaRxRLvmojjVX9HN+QfObQ ov10ddc7etwXIyvKtE0lfm46efFuuOtir1b9v7tsBrmX7LrBUGemYVQBKw8Y/uUJvKfH TpkQ== X-Gm-Message-State: AOAM530MiYXV8yzKrBWwrXIoUJ/jH2H/KYB168aNeDd9mrtVxsisvnBO /P9RUjj1JHvTdrtfvd9coEshrzhZEgQgbTiuiWxx+9qfJgqVvcQXvzK6jaAQ1jY1mLfxeW2GYeZ kFj+4djk9sjl/EUU4pOjUGsrRrTo1ubFh/4GrqY76HA== X-Received: by 2002:a05:6a00:10d1:b0:47b:aa9b:1e7a with SMTP id d17-20020a056a0010d100b0047baa9b1e7amr51079221pfu.57.1636030540369; Thu, 04 Nov 2021 05:55:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzv7qnAZMaRm3KMKtZjiJ4gIKYy1fP5Ex72Bh+vLyBOUKlPU6tI50lM+J+i2cEe7KmIqGPmnw== X-Received: by 2002:a05:6a00:10d1:b0:47b:aa9b:1e7a with SMTP id d17-20020a056a0010d100b0047baa9b1e7amr51079200pfu.57.1636030540107; Thu, 04 Nov 2021 05:55:40 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:39 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 34/41] arm64: PCI: Support root bridge preparation for Hyper-V Date: Thu, 4 Nov 2021 06:54:42 -0600 Message-Id: <20211104125449.16540-35-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Boqun Feng BugLink: https://bugs.launchpad.net/bugs/1949770 Currently at root bridge preparation, the corresponding ACPI device will be set as the companion, however for a Hyper-V virtual PCI root bridge, there is no corresponding ACPI device, because a Hyper-V virtual PCI root bridge is discovered via VMBus rather than ACPI table. In order to support this, we need to make pcibios_root_bridge_prepare() work with cfg->parent being NULL. Use a NULL pointer as the ACPI device if there is no corresponding ACPI device, and this is fine because: 1) ACPI_COMPANION_SET() can work with the second parameter being NULL, 2) semantically, if a NULL pointer is set via ACPI_COMPANION_SET(), ACPI_COMPANION() (the read API for this field) will return NULL, and since ACPI_COMPANION() may return NULL, so users must have handled the cases where it returns NULL, and 3) since there is no corresponding ACPI device, it would be wrong to use any other value here. Link: https://lore.kernel.org/r/20210726180657.142727-5-boqun.feng@gmail.com Signed-off-by: Boqun Feng Signed-off-by: Lorenzo Pieralisi Acked-by: Catalin Marinas (cherry picked from commit 7d40c0f70d92291605c4498b8ee4b3a3c3ba07b1) Signed-off-by: Tim Gardner --- arch/arm64/kernel/pci.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kernel/pci.c b/arch/arm64/kernel/pci.c index 5148ae242780..2276689b5411 100644 --- a/arch/arm64/kernel/pci.c +++ b/arch/arm64/kernel/pci.c @@ -90,7 +90,17 @@ int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge) return 0; cfg = bridge->bus->sysdata; - adev = to_acpi_device(cfg->parent); + + /* + * On Hyper-V there is no corresponding ACPI device for a root bridge, + * therefore ->parent is set as NULL by the driver. And set 'adev' as + * NULL in this case because there is no proper ACPI device. + */ + if (!cfg->parent) + adev = NULL; + else + adev = to_acpi_device(cfg->parent); + bus_dev = &bridge->bus->dev; ACPI_COMPANION_SET(&bridge->dev, adev); From patchwork Thu Nov 4 12:54:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550926 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=fJAU5XOm; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNvb5JdGz9sPf for ; Thu, 4 Nov 2021 23:57:15 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIl-0008KS-4w; Thu, 04 Nov 2021 12:57:07 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHR-0004uW-4m for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:45 +0000 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 13C163F1F5 for ; Thu, 4 Nov 2021 12:55:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030543; bh=QskENkefctOZqRuxOfscRoqNUNaqDjH8pDkRbbcIGQ4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fJAU5XOmsB53CU2rYvBp45fZX10GmvaeEXf4mrCNZvero+MNrcAiFPQCGMWCms6Hu p+1llY0hvIOe8DskUZxotOJRg361mV9sxtSUVu0kl6cFix/bxRazncgMb9NoM+79C/ tNYdKNXdU6RzDIaJL09B4+SL409uLzejKLQUHHoBmX8pPpBm+QNKE+XsWkMQ0BZBwX q0md8gjeFlIf9gWcdqnp7NU+lgDpRZlPcjdgsoNxZrnl+NxXjqmsQ6dAPaN44Xz8tk jpcQ/l2fMAFBMMcZPtprI7fWLijpL5DsNEfZi7qnLrWccH3AAXapcleApyLu2FbQd9 zgn4/Vejb/6+g== Received: by mail-pf1-f200.google.com with SMTP id r30-20020aa7989e000000b004812fdc343eso3748426pfl.9 for ; Thu, 04 Nov 2021 05:55:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QskENkefctOZqRuxOfscRoqNUNaqDjH8pDkRbbcIGQ4=; b=cgylwtKae9wj7MXfxd+/ghwegQErg9K4cSb4kNfKA5kT0r11WepwdxzG8XanbJ8ICl Q/lYkyWzNzWSGSwJyCSjxCYAzLopQiSqPNAJI55Et3i4xs44JolrseLfKc/89NknuPgt rVXO2H0x6va0ZjBe91eXfpsqHM6B46/Cyb4qbhgd6e4iEcLrJ3fgnVSTtaQZyFmsE/OX w7C6sqGfw+0iPvaXTOQ9c6wVJlPsayivLEUDcBvztqasL6vzfZg6JtPWWg65AQh4tYuR f+/c4OVcVqkBcDYfm5aPYOQYM21W238XSobdvYG+YKePJaSReJq6kX8vSWdpmAWF1kmK 3j/Q== X-Gm-Message-State: AOAM531AJd+c79ycfchFeiM+JVZsBNs1UgP3WA8FCdJuap+yRDISiLCv GPRLtrDPHqqMAlp9LWmU7IEyM3+BWYonrOOKPoiftmDCs5IHANDvJDAgxAWbuGm2Q9axewxfTrr pij7tMJ+Lk6VLG61K8uGBIWt938hUh09/zbDXwqbbDw== X-Received: by 2002:a17:902:cb8a:b0:141:f601:d5f1 with SMTP id d10-20020a170902cb8a00b00141f601d5f1mr22973708ply.77.1636030541211; Thu, 04 Nov 2021 05:55:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxpVlhgowvTZ5MD/S6tFGXJL4icwVjOdsR8JAaiQMFMrirwHwiMDk+K3gy/w0J4CLXhkrCKAQ== X-Received: by 2002:a17:902:cb8a:b0:141:f601:d5f1 with SMTP id d10-20020a170902cb8a00b00141f601d5f1mr22973683ply.77.1636030540877; Thu, 04 Nov 2021 05:55:40 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:40 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 35/41] PCI: hv: Generify PCI probing Date: Thu, 4 Nov 2021 06:54:43 -0600 Message-Id: <20211104125449.16540-36-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Arnd Bergmann BugLink: https://bugs.launchpad.net/bugs/1949770 In order to support ARM64 Hyper-V PCI, we need to set up the bridge at probing time because ARM64 is a PCI_DOMAIN_GENERIC=y arch and we don't have pci_config_window (ARM64 sysdata) for a PCI root bus on Hyper-V, so it's impossible to retrieve the information (e.g. PCI domains, MSI domains) from bus sysdata on ARM64 after creation. Originally in create_root_hv_pci_bus(), pci_create_root_bus() is used to create the root bus and the corresponding bridge based on x86 sysdata. Now we create a bridge first and then call pci_scan_root_bus_bridge(), which allows us to do the necessary set-ups for the bridge. Link: https://lore.kernel.org/r/20210726180657.142727-6-boqun.feng@gmail.com Signed-off-by: Arnd Bergmann Signed-off-by: Boqun Feng Signed-off-by: Lorenzo Pieralisi (cherry picked from commit 418cb6c8e051119125b886c879efdacb04df7165) Signed-off-by: Tim Gardner --- drivers/pci/controller/pci-hyperv.c | 57 +++++++++++++++-------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c index 089722630e4a..6fc5ef527a5f 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c @@ -449,6 +449,7 @@ enum hv_pcibus_state { struct hv_pcibus_device { struct pci_sysdata sysdata; + struct pci_host_bridge *bridge; /* Protocol version negotiated with the host */ enum pci_protocol_version_t protocol_version; enum hv_pcibus_state state; @@ -466,8 +467,6 @@ struct hv_pcibus_device { spinlock_t device_list_lock; /* Protect lists below */ void __iomem *cfg_addr; - struct list_head resources_for_children; - struct list_head children; struct list_head dr_list; @@ -1803,7 +1802,7 @@ static void hv_pci_assign_slots(struct hv_pcibus_device *hbus) slot_nr = PCI_SLOT(wslot_to_devfn(hpdev->desc.win_slot.slot)); snprintf(name, SLOT_NAME_SIZE, "%u", hpdev->desc.ser); - hpdev->pci_slot = pci_create_slot(hbus->pci_bus, slot_nr, + hpdev->pci_slot = pci_create_slot(hbus->bridge->bus, slot_nr, name, NULL); if (IS_ERR(hpdev->pci_slot)) { pr_warn("pci_create slot %s failed\n", name); @@ -1833,7 +1832,7 @@ static void hv_pci_remove_slots(struct hv_pcibus_device *hbus) static void hv_pci_assign_numa_node(struct hv_pcibus_device *hbus) { struct pci_dev *dev; - struct pci_bus *bus = hbus->pci_bus; + struct pci_bus *bus = hbus->bridge->bus; struct hv_pci_dev *hv_dev; list_for_each_entry(dev, &bus->devices, bus_list) { @@ -1856,24 +1855,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) { - /* Register the device */ - hbus->pci_bus = pci_create_root_bus(&hbus->hdev->device, - 0, /* bus number is always zero */ - &hv_pcifront_ops, - &hbus->sysdata, - &hbus->resources_for_children); - if (!hbus->pci_bus) - return -ENODEV; + int error; + struct pci_host_bridge *bridge = hbus->bridge; + + bridge->dev.parent = &hbus->hdev->device; + bridge->sysdata = &hbus->sysdata; + bridge->ops = &hv_pcifront_ops; + + error = pci_scan_root_bus_bridge(bridge); + if (error) + return error; hbus->pci_bus->msi = &hbus->msi_chip; hbus->pci_bus->msi->dev = &hbus->hdev->device; pci_lock_rescan_remove(); - pci_scan_child_bus(hbus->pci_bus); hv_pci_assign_numa_node(hbus); - pci_bus_assign_resources(hbus->pci_bus); + pci_bus_assign_resources(bridge->bus); hv_pci_assign_slots(hbus); - pci_bus_add_devices(hbus->pci_bus); + pci_bus_add_devices(bridge->bus); pci_unlock_rescan_remove(); hbus->state = hv_pcibus_installed; return 0; @@ -2138,7 +2138,7 @@ static void pci_devices_present_work(struct work_struct *work) * because there may have been changes. */ pci_lock_rescan_remove(); - pci_scan_child_bus(hbus->pci_bus); + pci_scan_child_bus(hbus->bridge->bus); hv_pci_assign_numa_node(hbus); hv_pci_assign_slots(hbus); pci_unlock_rescan_remove(); @@ -2309,8 +2309,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 - * must be done without constructs like pci_domain_nr(hbus->pci_bus) - * because hbus->pci_bus may not exist yet. + * must be done without constructs like pci_domain_nr(hbus->bridge->bus) + * because hbus->bridge->bus may not exist yet. */ wslot = wslot_to_devfn(hpdev->desc.win_slot.slot); pdev = pci_get_domain_bus_and_slot(hbus->sysdata.domain, 0, wslot); @@ -2679,8 +2679,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; - pci_add_resource(&hbus->resources_for_children, - hbus->low_mmio_res); + pci_add_resource(&hbus->bridge->windows, hbus->low_mmio_res); } if (hbus->high_mmio_space) { @@ -2699,8 +2698,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; - pci_add_resource(&hbus->resources_for_children, - hbus->high_mmio_res); + pci_add_resource(&hbus->bridge->windows, hbus->high_mmio_res); } return 0; @@ -3030,6 +3028,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) { + struct pci_host_bridge *bridge; struct hv_pcibus_device *hbus; u16 dom_req, dom; char *name; @@ -3042,6 +3041,10 @@ static int hv_pci_probe(struct hv_device *hdev, */ BUILD_BUG_ON(sizeof(*hbus) > HV_HYP_PAGE_SIZE); + bridge = devm_pci_alloc_host_bridge(&hdev->device, 0); + if (!bridge) + return -ENOMEM; + /* * With the recent 59bb47985c1d ("mm, sl[aou]b: guarantee natural * alignment for kmalloc(power-of-two)"), kzalloc() is able to allocate @@ -3063,6 +3066,8 @@ static int hv_pci_probe(struct hv_device *hdev, hbus = kzalloc(HV_HYP_PAGE_SIZE, GFP_KERNEL); if (!hbus) return -ENOMEM; + + hbus->bridge = bridge; hbus->state = hv_pcibus_init; hbus->wslot_res_allocated = -1; @@ -3100,7 +3105,6 @@ static int hv_pci_probe(struct hv_device *hdev, refcount_set(&hbus->remove_lock, 1); INIT_LIST_HEAD(&hbus->children); INIT_LIST_HEAD(&hbus->dr_list); - INIT_LIST_HEAD(&hbus->resources_for_children); spin_lock_init(&hbus->config_lock); spin_lock_init(&hbus->device_list_lock); spin_lock_init(&hbus->retarget_msi_interrupt_lock); @@ -3325,9 +3329,9 @@ static int hv_pci_remove(struct hv_device *hdev) /* Remove the bus from PCI's point of view. */ pci_lock_rescan_remove(); - pci_stop_root_bus(hbus->pci_bus); + pci_stop_root_bus(hbus->bridge->bus); hv_pci_remove_slots(hbus); - pci_remove_root_bus(hbus->pci_bus); + pci_remove_root_bus(hbus->bridge->bus); pci_unlock_rescan_remove(); } @@ -3337,7 +3341,6 @@ static int hv_pci_remove(struct hv_device *hdev) iounmap(hbus->cfg_addr); hv_free_config_window(hbus); - pci_free_resource_list(&hbus->resources_for_children); hv_pci_free_bridge_windows(hbus); irq_domain_remove(hbus->irq_domain); irq_domain_free_fwnode(hbus->sysdata.fwnode); @@ -3422,7 +3425,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) { - pci_walk_bus(hbus->pci_bus, hv_pci_restore_msi_msg, NULL); + pci_walk_bus(hbus->bridge->bus, hv_pci_restore_msi_msg, NULL); } static int hv_pci_resume(struct hv_device *hdev) From patchwork Thu Nov 4 12:54:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550925 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=sn52vN4F; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNvY6tjKz9sPf for ; Thu, 4 Nov 2021 23:57:13 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIi-0008BL-Pb; Thu, 04 Nov 2021 12:57:04 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHT-0004wm-TB for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:47 +0000 Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 301853F1C6 for ; Thu, 4 Nov 2021 12:55:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030545; bh=WLqZyXdrlMpdWdVGe6fPpyegBRW/LxGXPwutrQavusg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=sn52vN4FiBySr89N22IwoupUXCDGIr2aSwO6y8gbCVNLq618Qkt0R+Cj3TTfuT+Jh 1VRYdYfAdCUPXJ16VoEJ3sv9n8chxbObRae5fxrSoBM6uMHEJi/Rvint3qrbZurKjN Iuj/D5++3iqOFvTRGA/yxLPfEDu3+l/vi1KH0m3O7PPeAyrFqifY/I5ZdGaKRu03Re kvG0ZA6hi6VxeotIANpL5p+h0h++970ougEJVeaGWNwShudoeKceP44AXTIH/IgnyY W6Zd7bXe9pBctK3FlP9AK/6APTE3cFd038Q+2l+QY5g2SHv9bW/9y5g2za7zwE0sSy cJbCOBcMLWN7A== Received: by mail-pf1-f199.google.com with SMTP id g142-20020a625294000000b004946d789d14so759036pfb.3 for ; Thu, 04 Nov 2021 05:55:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WLqZyXdrlMpdWdVGe6fPpyegBRW/LxGXPwutrQavusg=; b=Nyvnp84RE0zaYdoWvUnBSnD11Ms4bEx0XHUC3sTaxDLqyYD2i1WdyeE6Bz/YCCCFKm HjtJPFbH8rpnd6lblBrHlO/Xp/Z8+2LLiqj/AaQLO0WWNkps94cZqW1hA/wcTDuDOCwo kNn0jxH8xoJhWHMLuIPDZZwG546+KHAX+TzmD+1LHm1z/zSQcf4RjLXytQM3ZbJdM4uW AaD+m1ks6sMH6+DBqqtCuEvHnyE3iiOacXO3VrZ4JdJO8dvSGx5LVM91ZXI2QnKO9zoW ai3C8UvEiJw7ugi7ZkDXIXymRw6sjotTV9GNnuDH9OXVVHIkW9Chx6iGORlijGpH5LTK nWHg== X-Gm-Message-State: AOAM530oq3+5+5QTe3FEyuQgDMAfTq7eQ7KS0o+okdcBvcAj8v0cB8xe f9HZCvqsldCjJDSjairvWZzAlsXvv6Wo3TrgDB+UKK/vwyM7emxOm1iLFNrS25WwsX+9M4vq+et g9o8uBs5M/faO5AByQW37VXyF6AT2woHafBtZ8MDgLQ== X-Received: by 2002:a05:6a00:2405:b0:44c:1ec3:8dbe with SMTP id z5-20020a056a00240500b0044c1ec38dbemr52999546pfh.33.1636030541874; Thu, 04 Nov 2021 05:55:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy3m5atthFalDvd+M2eyoy0aWyH9Ti5U/ZSg/fTgADf1SDvTAYdN2YfxVXREtHeuRjt9afVHg== X-Received: by 2002:a05:6a00:2405:b0:44c:1ec3:8dbe with SMTP id z5-20020a056a00240500b0044c1ec38dbemr52999521pfh.33.1636030541629; Thu, 04 Nov 2021 05:55:41 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:41 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 36/41] PCI: hv: Set ->domain_nr of pci_host_bridge at probing time Date: Thu, 4 Nov 2021 06:54:44 -0600 Message-Id: <20211104125449.16540-37-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Boqun Feng BugLink: https://bugs.launchpad.net/bugs/1949770 No functional change, just store and maintain the PCI domain number in the ->domain_nr of pci_host_bridge. Note that we still need to keep the copy of domain number in x86-specific pci_sysdata, because x86 is not a PCI_DOMAINS_GENERIC=y architecture, so the ->domain_nr of pci_host_bridge doesn't work for it yet. Link: https://lore.kernel.org/r/20210726180657.142727-7-boqun.feng@gmail.com Signed-off-by: Boqun Feng Signed-off-by: Lorenzo Pieralisi (cherry picked from commit 38c0d266dc80b81f7f72314620f01ff6a1e119fe) Signed-off-by: Tim Gardner --- drivers/pci/controller/pci-hyperv.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c index 6fc5ef527a5f..38b4b42bae13 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c @@ -2313,7 +2313,7 @@ static void hv_eject_device_work(struct work_struct *work) * because hbus->bridge->bus may not exist yet. */ wslot = wslot_to_devfn(hpdev->desc.win_slot.slot); - pdev = pci_get_domain_bus_and_slot(hbus->sysdata.domain, 0, wslot); + pdev = pci_get_domain_bus_and_slot(hbus->bridge->domain_nr, 0, wslot); if (pdev) { pci_lock_rescan_remove(); pci_stop_and_remove_bus_device(pdev); @@ -3099,6 +3099,7 @@ static int hv_pci_probe(struct hv_device *hdev, "PCI dom# 0x%hx has collision, using 0x%hx", dom_req, dom); + hbus->bridge->domain_nr = dom; hbus->sysdata.domain = dom; hbus->hdev = hdev; @@ -3110,7 +3111,7 @@ static int hv_pci_probe(struct hv_device *hdev, spin_lock_init(&hbus->retarget_msi_interrupt_lock); init_completion(&hbus->remove_event); hbus->wq = alloc_ordered_workqueue("hv_pci_%x", 0, - hbus->sysdata.domain); + hbus->bridge->domain_nr); if (!hbus->wq) { ret = -ENOMEM; goto free_dom; @@ -3237,7 +3238,7 @@ static int hv_pci_probe(struct hv_device *hdev, destroy_wq: destroy_workqueue(hbus->wq); free_dom: - hv_put_dom_num(hbus->sysdata.domain); + hv_put_dom_num(hbus->bridge->domain_nr); free_bus: kfree(hbus); return ret; @@ -3347,7 +3348,7 @@ static int hv_pci_remove(struct hv_device *hdev) put_hvpcibus(hbus); wait_for_completion(&hbus->remove_event); - hv_put_dom_num(hbus->sysdata.domain); + hv_put_dom_num(hbus->bridge->domain_nr); kfree(hbus); return ret; From patchwork Thu Nov 4 12:54:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550931 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=Unr4DC/0; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNvs3Dhsz9sPf for ; Thu, 4 Nov 2021 23:57:29 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIx-0000iY-OV; Thu, 04 Nov 2021 12:57:19 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHU-0004xE-9U for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:48 +0000 Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 885FB3F1C7 for ; Thu, 4 Nov 2021 12:55:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030545; bh=T8TgzuLOASpgSuxItCmrn8FZTXqR2I5gU3Qawr0vsSo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Unr4DC/07DEIc5P50pRYKM81l5AdZatWxfBivgepHHTBCd7FODy4h1fY8TTrnUjBj a8aevFhmAP+69Uecx1SLnUCJUs0s7AMwLBpayZ+3lFbTWLFaRDGCRpcQlH/rQ+7umB UPOdR1Nyicqsn3XCcZ5v3GPM7TEPbW+Rn8HhmJ4s4DW/SI97anReEiH5RRmlpIw0dB 4QeoqIEmW9eXy/TB0KshcNae+Tfidqk3n1hU5JUAH72RbKg+0oGY8IApnZmMfx2xnX vrZZ1ApXoJ0R0ICix8dIHQM0XOHzV5xdje6sEL4i50IX0lBIvGbXKm7JmZR1V89VcH qAmRvwP4Kgdmg== Received: by mail-pg1-f197.google.com with SMTP id p35-20020a635b23000000b002cc3b82cc32so3630565pgb.14 for ; Thu, 04 Nov 2021 05:55:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=T8TgzuLOASpgSuxItCmrn8FZTXqR2I5gU3Qawr0vsSo=; b=o/0+DccnrUJZcbGj0HGqp0cm3YITeXseTR0r/OOBuEJeGxweqawf6fQt8ubM2SsqG+ goJVs6fh/9xYocI4/gfuXaIpHRH5EO2lNgnaxVjIMWVTZBdxlxQEQB9YlPeIX4jghU3G Lu2bSgXhCCFCuPQipZqae/G9XCZgute/b8GjZQ5qOpeLflYKPVtkRVbmlOdxPanfOm4l 95Ko62QMRx8cA9xQEmnwJ7FiCmfIKaeOdJvx70ILSB2MovmJnXqbdpv9KmbBZOv01I53 ussF/gX+a/hxOe/QUUq1ozYKCiKjwcCJykD0QwmnU3dhjiD5cIiYTtl3YntdO82khdd7 NcNw== X-Gm-Message-State: AOAM5326NB5Dhi63CTJkkTQQ/Juj1Vxd6PAhy5nSaZ/GTzklT8GDQzXK Um1Qirs6DtGaNjNv40I6xNQkQVb/AqIFoF7WToGmVvX3YNKnkU+uI/KjoekSej8OXJDmbv0o6sq t645VaAxWzeSChuPzlQdt/IvRY+rf2PQQqC06dZMdAA== X-Received: by 2002:a65:648b:: with SMTP id e11mr38663094pgv.138.1636030542576; Thu, 04 Nov 2021 05:55:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyoYm8DgMdH225CEH0pDDNTPzZ7RzFeKMoKFceoyQzLNxcDOzvX1DOuLCtdwxcGCmfazKxgqA== X-Received: by 2002:a65:648b:: with SMTP id e11mr38663080pgv.138.1636030542390; Thu, 04 Nov 2021 05:55:42 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:42 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 37/41] PCI: hv: Turn on the host bridge probing on ARM64 Date: Thu, 4 Nov 2021 06:54:45 -0600 Message-Id: <20211104125449.16540-38-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Boqun Feng BugLink: https://bugs.launchpad.net/bugs/1949770 Now we have everything we need, just provide a proper sysdata type for the bus to use on ARM64 and everything else works. Link: https://lore.kernel.org/r/20210726180657.142727-9-boqun.feng@gmail.com Signed-off-by: Boqun Feng Signed-off-by: Lorenzo Pieralisi (cherry picked from commit 88f94c7f8f40d7e26f991f6f6ed914ff44361d75) Signed-off-by: Tim Gardner --- drivers/pci/controller/pci-hyperv.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c index 38b4b42bae13..6b5cff113e62 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include @@ -448,7 +449,11 @@ enum hv_pcibus_state { }; struct hv_pcibus_device { +#ifdef CONFIG_X86 struct pci_sysdata sysdata; +#elif defined(CONFIG_ARM64) + struct pci_config_window sysdata; +#endif struct pci_host_bridge *bridge; /* Protocol version negotiated with the host */ enum pci_protocol_version_t protocol_version; @@ -3100,7 +3105,9 @@ static int hv_pci_probe(struct hv_device *hdev, dom_req, dom); hbus->bridge->domain_nr = dom; +#ifdef CONFIG_X86 hbus->sysdata.domain = dom; +#endif hbus->hdev = hdev; refcount_set(&hbus->remove_lock, 1); From patchwork Thu Nov 4 12:54:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550929 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=X0b7kxM+; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNvn0yk7z9sPf for ; Thu, 4 Nov 2021 23:57:25 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micIt-0000Uv-Ob; Thu, 04 Nov 2021 12:57:15 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHT-0004xO-Sp for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:48 +0000 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id B52473F1F5 for ; Thu, 4 Nov 2021 12:55:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030545; bh=iqywwY6QKkrh2RoTFlT5WTZm3CEZyB11xvPe4JGIFHg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=X0b7kxM+TNbJSP3J/bik9EP2P16ZdAcym/sklviS0aplxhoVS/wyf3VN0F7mvBLbo rbHB22jHTDg+FAnqCH5RIF8gWYO4ZOx1HfVyFxQ3aQ2LkIOyH5asMe/LqShVM9N2K3 FUPsDEelp48+oc5dkJXdWCies51QOPOiASCBL0No0ghVB0K/KIDIozVKC3ef5gBQQq HOS8c0ODXsLK+5M17EOshwtr1uigsKppqZ/5iK+NZJ1gDpgRc7jbyeks5GMLLOqPHZ 0KlieJth4LWU6O9K51Kof+FRF51a3oj8t6dSCEMgQ54ugIEOD0M7UfWbme/YNe32Bn xn6zOq3Mfx+eQ== Received: by mail-pf1-f200.google.com with SMTP id x34-20020a056a0018a200b004945bce89bdso1932173pfh.17 for ; Thu, 04 Nov 2021 05:55:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iqywwY6QKkrh2RoTFlT5WTZm3CEZyB11xvPe4JGIFHg=; b=aLnlAUVlCZSBt4WebItBh5Og5JkMXEgxGIUimmxQ4ZOKvN9+mQ1MabGs4SkhTs0MF6 gOJ+V1RCg0ZRFywykjLKqCcVizlU9NKfEZkZ+xHpEyq75irJflYj/N3VGu27BxmHS5fd kbXke3TIt1FTGI+KRqWfAF6oBfKHLgKFYBHAZMiKm9EmLQHS56+8tZY9vBFxLfU/QDks 0TeS8U0m/pD0akjtbWt6z10Wh6YGvr9mAVRnepTMrutsdRJ/RnQdhOFD8lmfJ+88LCx5 jMRmXFqXndp962pVz/7nrL5ImgNVqxEEZbnFsrVs+ASM3FMOb9asy27Q2SGZcw/toW8g XZYQ== X-Gm-Message-State: AOAM5328O39sjThsV1seRDaY2ZKBbAmH80C34UVUYU2pZNVsw1ro5T8K LjW+3ntncndpZydv8k/DIEkvc5bxq6qdMGZHCH7+Zy24aBVhcPrtpIlhRgB1JBueXOIeKG2QiSi tahXb1+NCp9eqPDc+eboib5I7WWizWKMLXD2JWKf1BA== X-Received: by 2002:a17:902:f209:b0:141:99d1:7cef with SMTP id m9-20020a170902f20900b0014199d17cefmr43172947plc.70.1636030543932; Thu, 04 Nov 2021 05:55:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwSm7pkrCgew46EUCqgZIVnAhbGr08g7BkyahDoLxMJs5ISNqFeqVkn9o7EK/Ii4hEc3Wx6eg== X-Received: by 2002:a17:902:f209:b0:141:99d1:7cef with SMTP id m9-20020a170902f20900b0014199d17cefmr43172923plc.70.1636030543603; Thu, 04 Nov 2021 05:55:43 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:42 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 38/41] PCI: hv: Set up MSI domain at bridge probing time Date: Thu, 4 Nov 2021 06:54:46 -0600 Message-Id: <20211104125449.16540-39-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Boqun Feng BugLink: https://bugs.launchpad.net/bugs/1949770 Since PCI_HYPERV depends on PCI_MSI_IRQ_DOMAIN which selects GENERIC_MSI_IRQ_DOMAIN, we can use dev_set_msi_domain() to set up the MSI domain at probing time, and this works for both x86 and ARM64. Therefore use it as the preparation for ARM64 Hyper-V PCI support. As a result, no longer need to maintain ->fwnode in x86 specific pci_sysdata, and make hv_pcibus_device own it instead. Link: https://lore.kernel.org/r/20210726180657.142727-8-boqun.feng@gmail.com Signed-off-by: Boqun Feng Signed-off-by: Lorenzo Pieralisi (backported from commit 9e7f9178ab4943b3a7294a12bc38925c515ca3f0) Signed-off-by: Tim Gardner [rtg - minor context adjustment] --- drivers/pci/controller/pci-hyperv.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/pci/controller/pci-hyperv.c b/drivers/pci/controller/pci-hyperv.c index 6b5cff113e62..a5cb3778725f 100644 --- a/drivers/pci/controller/pci-hyperv.c +++ b/drivers/pci/controller/pci-hyperv.c @@ -455,6 +455,7 @@ struct hv_pcibus_device { struct pci_config_window sysdata; #endif struct pci_host_bridge *bridge; + struct fwnode_handle *fwnode; /* Protocol version negotiated with the host */ enum pci_protocol_version_t protocol_version; enum hv_pcibus_state state; @@ -1576,7 +1577,7 @@ static int hv_pcie_init_irq_domain(struct hv_pcibus_device *hbus) hbus->msi_info.handler = handle_edge_irq; hbus->msi_info.handler_name = "edge"; hbus->msi_info.data = hbus; - hbus->irq_domain = pci_msi_create_irq_domain(hbus->sysdata.fwnode, + hbus->irq_domain = pci_msi_create_irq_domain(hbus->fwnode, &hbus->msi_info, x86_vector_domain); if (!hbus->irq_domain) { @@ -1585,6 +1586,8 @@ static int hv_pcie_init_irq_domain(struct hv_pcibus_device *hbus) return -ENODEV; } + dev_set_msi_domain(&hbus->bridge->dev, hbus->irq_domain); + return 0; } @@ -3155,9 +3158,9 @@ static int hv_pci_probe(struct hv_device *hdev, goto unmap; } - hbus->sysdata.fwnode = irq_domain_alloc_named_fwnode(name); + hbus->fwnode = irq_domain_alloc_named_fwnode(name); kfree(name); - if (!hbus->sysdata.fwnode) { + if (!hbus->fwnode) { ret = -ENOMEM; goto unmap; } @@ -3235,7 +3238,7 @@ static int hv_pci_probe(struct hv_device *hdev, free_irq_domain: irq_domain_remove(hbus->irq_domain); free_fwnode: - irq_domain_free_fwnode(hbus->sysdata.fwnode); + irq_domain_free_fwnode(hbus->fwnode); unmap: iounmap(hbus->cfg_addr); free_config: @@ -3351,7 +3354,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); - irq_domain_free_fwnode(hbus->sysdata.fwnode); + irq_domain_free_fwnode(hbus->fwnode); put_hvpcibus(hbus); wait_for_completion(&hbus->remove_event); From patchwork Thu Nov 4 12:54:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550932 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=wIz1/EYd; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNvt6PTRz9sPf for ; Thu, 4 Nov 2021 23:57:30 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micJ0-0000rm-7i; Thu, 04 Nov 2021 12:57:22 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHU-0004yP-Kd for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:48 +0000 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 5842E3F1C5 for ; Thu, 4 Nov 2021 12:55:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030546; bh=goeeejv/KdIG+yJnbR4rAqkuGP6IlJoRF1RWqQSMDUQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=wIz1/EYdF0R8TkmTGJGRBRmPyBnbDV4QtL0OZF15+XAVTO02fC/VxNeqXgk6Kb0sK 2I63JNjUiLZCtVauRenfn+6EPjmmfLvLw8ZOrMutlZ27nQ8qED1fkkl2eA7NV2f62I poya/Gl+33wh6BenaxYYs0RCGXmw1Sj9LJg0yzBwgsqqfyVMnuxRn9oN1dMk+gYrSU ftE603vmT5pUj7WnZWxtUbGViW4lGfCmhFd/UwhkEvBoQWl8Rs8kBe8L0bxlF+VYiN qU8or3WDWqfthLGB1S6HUl7oto9tMXCAvbTrNYhfZG7Z3bmJzOkdt8dPQTIWbLwIPX eQdEeu7pk3z4g== Received: by mail-pf1-f200.google.com with SMTP id g142-20020a625294000000b004946d789d14so759093pfb.3 for ; Thu, 04 Nov 2021 05:55:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=goeeejv/KdIG+yJnbR4rAqkuGP6IlJoRF1RWqQSMDUQ=; b=ngSbrU50nSQmzby/dcuzXk5sClHMIm22HkFpQuSw5TrIf8pHPj3BHP4ac8CZQij2yF 4bXypQp/4WTC5xW8j7X0uU16NeuOpX554DbkK7XsY68azwG/xOdGM5gOt/r/vSfBDE5k ngYtaroIxYmVsQzHTBDwfLYxtFD6JiE/nX46CrmVAF7IJcFVsabcamXK0nFdrJKCA4C+ aCqRVcMN8sW2tYCIZ72ncMDFMLKicZzONc3jzFQQDwwn4LwwEHd+DYiL0mZEzZtk4soZ khOnCUkA66ATyjM6IcPz7VLeJvdrRqtkQdZc6b9wTAuuvrw5S/jULBfy8T6tfw5YEc2m /oLQ== X-Gm-Message-State: AOAM530HVf7sSgng9tUQFfXRxJyQrKIYwSYF6jaJ6MHBlXqTmLBDhdaj 9ciAc1gJ0M5Hv8ew/pe+VK6c8Dv6XlMTxCp8RQGmGtG8kj0/AiCJ6cVMp1k5AnU0Cw8yju9srTC CxuAK/Xsv825vDpvlbQxiPm2ygg4XbRP5Pw/cFGD1Yg== X-Received: by 2002:a63:b509:: with SMTP id y9mr2357181pge.415.1636030544796; Thu, 04 Nov 2021 05:55:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyMI+q4PTLAAFmixyiKn2CXpuW74HtjdjBPvjPoAmAVcgINfN9TviIGlm1ciYU5N/rJMSQuYA== X-Received: by 2002:a63:b509:: with SMTP id y9mr2357161pge.415.1636030544550; Thu, 04 Nov 2021 05:55:44 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:44 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 39/41] Drivers: hv: Enable Hyper-V code to be built on ARM64 Date: Thu, 4 Nov 2021 06:54:47 -0600 Message-Id: <20211104125449.16540-40-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Michael Kelley BugLink: https://bugs.launchpad.net/bugs/1949770 Update drivers/hv/Kconfig so CONFIG_HYPERV can be selected on ARM64, causing the Hyper-V specific code to be built. Exclude the Hyper-V enlightened clocks/timers code from being built for ARM64. Signed-off-by: Michael Kelley Reviewed-by: Boqun Feng Acked-by: Marc Zyngier Acked-by: Mark Rutland Acked-by: Catalin Marinas Link: https://lore.kernel.org/r/1628092359-61351-6-git-send-email-mikelley@microsoft.com Signed-off-by: Wei Liu (cherry picked from commit 7aff79e297ee1aa0126924921fd87a4ae59d2467) Signed-off-by: Tim Gardner --- drivers/hv/Kconfig | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/hv/Kconfig b/drivers/hv/Kconfig index 66c794d92391..d1123ceb38f3 100644 --- a/drivers/hv/Kconfig +++ b/drivers/hv/Kconfig @@ -4,15 +4,16 @@ menu "Microsoft Hyper-V guest support" config HYPERV tristate "Microsoft Hyper-V client drivers" - depends on X86 && ACPI && X86_LOCAL_APIC && HYPERVISOR_GUEST + depends on ACPI && ((X86 && X86_LOCAL_APIC && HYPERVISOR_GUEST) \ + || (ARM64 && !CPU_BIG_ENDIAN)) select PARAVIRT - select X86_HV_CALLBACK_VECTOR + select X86_HV_CALLBACK_VECTOR if X86 help Select this option to run Linux as a Hyper-V client operating system. config HYPERV_TIMER - def_bool HYPERV + def_bool HYPERV && X86 config HYPERV_UTILS tristate "Microsoft Hyper-V Utilities driver" From patchwork Thu Nov 4 12:54:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550934 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=A+1/XGDO; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNw329Vxz9sPf for ; Thu, 4 Nov 2021 23:57:39 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micJ6-00019O-Ch; Thu, 04 Nov 2021 12:57:28 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHa-000554-DD for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:55 +0000 Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 1E0763F1C0 for ; Thu, 4 Nov 2021 12:55:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030551; bh=r5ptCJK2H4qxBhVVn9zczulkiMBF/vocZUvzaQU72V4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=A+1/XGDOINFyH+H9zswZJXLjtjWc+p14O3lHGEX/47tfTRqE+Xttaypy2lPT9Z6Ua JZBYmtnjOB6IQ62eBmDTEpsQHikiNvDiTRxGOIFvaiZuveP7B41oIucxRlpFlcMMPh kgfU+qOhTMCAQrBne4uKL9SZiohZ64bdf+f9/P/hgwEq/3izgCfASWeNPfiz6Rarji LXQeJxmam2yANzvQZqOPCGrKDp/jUPTBml3aamSuUJ7UT/yxJ7J2dl/0nQrsx04DFQ /7wlM40QoN+RWwTDaWkDkSVwMbCYQ3Lrk+DTZlbto77H2y9ibL8pdRUr9mmpQz0eX8 M0pMqMWRZK6BQ== Received: by mail-pf1-f198.google.com with SMTP id u4-20020a056a00098400b004946fc3e863so484279pfg.8 for ; Thu, 04 Nov 2021 05:55:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=r5ptCJK2H4qxBhVVn9zczulkiMBF/vocZUvzaQU72V4=; b=Da67yTqy0aB0Gt69A7T+fP32+C6Po7SV4QBINCSgXfGMn/zYX8L9M3JyHXOJR6I7bY NFZVNmt2yBMCpllFSO+2ag58N4p2jy7Z8ZyqCgaGj6YET0uA5aMMSjjbtHZ3OVNLTGq1 kbU/+qSP4sPe19QbXY2jme3p8pPuF8RI5IbLZKuMErnAfNmjfFNgGp3opJCjL7PMLooJ fxB6bL8MIuu6K1RqKK2BnEwgDpTZ6xWD43/SoT7yb+WV/WRhw0cG9pLwjGlRQQqtt+2D GgOdlFbERyirv9uanxtWv5FGVqhPhcvrSJP+R/4NUGK0Ikfn9MvQXT1In941A5jhayYW fPDQ== X-Gm-Message-State: AOAM5339/EVqQSQQNgz8mdFl24vRj1UZkn61cxjtbGrrJCbKjhoCtVWJ o+RY6d/MLX/u+L2yMT8P4J9PH/9NXr+VVo7dE38noy+56ErorAnzXbQPggJUSzR2ulEEMC2S4px II4ECviqx2Ll9iiw1N5WN8AeQmuJPb84jkhy39N2R/g== X-Received: by 2002:a17:90a:de0b:: with SMTP id m11mr21835703pjv.39.1636030547387; Thu, 04 Nov 2021 05:55:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzXGs1J75tF7GLF6dUbVmjJpIcHQjmhS0rkSRWo+Jm6yVcIjN2mpMQOrutYRPauPSNsEarl3w== X-Received: by 2002:a17:90a:de0b:: with SMTP id m11mr21835568pjv.39.1636030545936; Thu, 04 Nov 2021 05:55:45 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:45 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 40/41] UBUNTU: [Packaging] linux-azure: Add packaging support for arm64 Date: Thu, 4 Nov 2021 06:54:48 -0600 Message-Id: <20211104125449.16540-41-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Marcelo Henrique Cerri BugLink: https://bugs.launchpad.net/bugs/1949770 Update the control file generation files, debian rules options, arm64 configs, ABI ignore files, and getabis to support arm64. Signed-off-by: Marcelo Henrique Cerri --- .../abi/5.11.0-1020.21/arm64/azure.ignore | 1 + .../arm64/azure.ignore.compiler | 1 + .../5.11.0-1020.21/arm64/azure.ignore.modules | 1 + .../arm64/azure.ignore.retpoline | 1 + debian.azure/abi/5.11.0-1020.21/arm64/ignore | 1 + debian.azure/config/amd64/config.common.amd64 | 37 + debian.azure/config/annotations | 190 +- debian.azure/config/arm64/config.common.arm64 | 40 + .../config/arm64/config.flavour.azure | 3 + debian.azure/config/config.common.ubuntu | 2135 ++++++++++++++++- debian.azure/control.d/flavour-control.stub | 2 +- debian.azure/control.d/vars.azure | 4 +- debian.azure/control.stub.in | 9 +- debian.azure/d-i/kernel-versions | 1 + debian.azure/etc/getabis | 1 + debian.azure/etc/kernelconfig | 2 +- debian.azure/rules.d/arm64.mk | 28 + 17 files changed, 2317 insertions(+), 140 deletions(-) create mode 100644 debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore create mode 100644 debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore.compiler create mode 100644 debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore.modules create mode 100644 debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore.retpoline create mode 100644 debian.azure/abi/5.11.0-1020.21/arm64/ignore 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 diff --git a/debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore b/debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore new file mode 100644 index 000000000000..d00491fd7e5b --- /dev/null +++ b/debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore @@ -0,0 +1 @@ +1 diff --git a/debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore.compiler b/debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore.compiler new file mode 100644 index 000000000000..d00491fd7e5b --- /dev/null +++ b/debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore.compiler @@ -0,0 +1 @@ +1 diff --git a/debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore.modules b/debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore.modules new file mode 100644 index 000000000000..d00491fd7e5b --- /dev/null +++ b/debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore.modules @@ -0,0 +1 @@ +1 diff --git a/debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore.retpoline b/debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore.retpoline new file mode 100644 index 000000000000..d00491fd7e5b --- /dev/null +++ b/debian.azure/abi/5.11.0-1020.21/arm64/azure.ignore.retpoline @@ -0,0 +1 @@ +1 diff --git a/debian.azure/abi/5.11.0-1020.21/arm64/ignore b/debian.azure/abi/5.11.0-1020.21/arm64/ignore new file mode 100644 index 000000000000..d00491fd7e5b --- /dev/null +++ b/debian.azure/abi/5.11.0-1020.21/arm64/ignore @@ -0,0 +1 @@ +1 diff --git a/debian.azure/config/amd64/config.common.amd64 b/debian.azure/config/amd64/config.common.amd64 index 529c49d4daae..f3eec5c79fae 100644 --- a/debian.azure/config/amd64/config.common.amd64 +++ b/debian.azure/config/amd64/config.common.amd64 @@ -1,3 +1,40 @@ # # Config options for config.common.amd64 automatically generated by splitconfig.pl # +# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +CONFIG_ARCH_MMAP_RND_BITS=28 +CONFIG_ARCH_MMAP_RND_BITS_MAX=32 +CONFIG_ARCH_MMAP_RND_BITS_MIN=28 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 +CONFIG_ATA_PIIX=y +# CONFIG_BROADCOM_PHY is not set +CONFIG_CC_VERSION_TEXT="gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0" +# CONFIG_CMA is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +CONFIG_CRC8=m +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11 +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_DMA_VIRTUAL_CHANNELS=m +# CONFIG_EXTCON is not set +CONFIG_FB_CFB_COPYAREA=m +CONFIG_FB_CFB_FILLRECT=m +CONFIG_FB_CFB_IMAGEBLIT=m +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_HIBERNATION=y +CONFIG_HIO=m +# CONFIG_I2C_SLAVE is not set +CONFIG_KVM=m +# CONFIG_LCD_CLASS_DEVICE is not set +# CONFIG_MARVELL_PHY is not set +CONFIG_NR_CPUS=8192 +# CONFIG_OF is not set +CONFIG_PGTABLE_LEVELS=5 +# CONFIG_PWM is not set +# CONFIG_USB_CONN_GPIO is not set +# CONFIG_USB_ROLE_SWITCH is not set +CONFIG_VFIO=y +CONFIG_VFIO_IOMMU_TYPE1=y +CONFIG_VFIO_PCI=y +CONFIG_VFIO_VIRQFD=y diff --git a/debian.azure/config/annotations b/debian.azure/config/annotations index 4295fe0ea79d..65443d8a792a 100644 --- a/debian.azure/config/annotations +++ b/debian.azure/config/annotations @@ -7,293 +7,293 @@ include "../../debian.master/config/annotations" CONFIG_MICROSOFT_MANA policy<{'amd64': 'y'}> CONFIG_MICROSOFT_MANA mark note -CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES policy<{'amd64': '-'}> +CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES mark note -CONFIG_SND_SOC_INTEL_SOUNDWIRE_SOF_MACH policy<{'amd64': '-'}> +CONFIG_SND_SOC_INTEL_SOUNDWIRE_SOF_MACH policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_INTEL_SOUNDWIRE_SOF_MACH mark note -CONFIG_ACPI_HOTPLUG_MEMORY policy<{'amd64': 'n'}> +CONFIG_ACPI_HOTPLUG_MEMORY policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_ACPI_HOTPLUG_MEMORY mark note CONFIG_FPGA_MGR_XILINX_SPI mark note -CONFIG_FPGA_MGR_XILINX_SPI policy<{'amd64': 'm'}> +CONFIG_FPGA_MGR_XILINX_SPI policy<{'amd64': 'm', 'arm64': 'm'}> -CONFIG_ANDROID policy<{'amd64': 'y'}> +CONFIG_ANDROID policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_ANDROID mark note -CONFIG_ASHMEM policy<{'amd64': 'm'}> +CONFIG_ASHMEM policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_ASHMEM mark note -CONFIG_ANDROID_BINDER_IPC policy<{'amd64': 'm'}> +CONFIG_ANDROID_BINDER_IPC policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_ANDROID_BINDER_IPC mark note -CONFIG_ANDROID_BINDERFS policy<{'amd64': 'm'}> +CONFIG_ANDROID_BINDERFS policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_ANDROID_BINDERFS mark note -CONFIG_MLX5_CORE policy<{'amd64': 'm'}> +CONFIG_MLX5_CORE policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_MLX5_CORE mark note -CONFIG_MLX4_CORE policy<{'amd64': 'm'}> +CONFIG_MLX4_CORE policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_MLX4_CORE mark note -CONFIG_MLX4_INFINIBAND policy<{'amd64': 'm'}> +CONFIG_MLX4_INFINIBAND policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_MLX4_INFINIBAND mark note -CONFIG_MLX5_INFINIBAND policy<{'amd64': 'm'}> +CONFIG_MLX5_INFINIBAND policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_MLX5_INFINIBAND mark note -CONFIG_INFINIBAND_USER_MAD policy<{'amd64': 'm'}> +CONFIG_INFINIBAND_USER_MAD policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_INFINIBAND_USER_MAD mark note -CONFIG_INFINIBAND_IPOIB policy<{'amd64': 'm'}> +CONFIG_INFINIBAND_IPOIB policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_INFINIBAND_IPOIB mark note -CONFIG_BLK_DEV_NVME policy<{'amd64': 'y'}> +CONFIG_BLK_DEV_NVME policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_BLK_DEV_NVME mark note note -CONFIG_PCI_HYPERV policy<{'amd64': 'y'}> +CONFIG_PCI_HYPERV policy<{'amd64': 'y', 'arm64': '-'}> CONFIG_PCI_HYPERV mark note -CONFIG_EDAC_DECODE_MCE policy<{'amd64': 'y'}> +CONFIG_EDAC_DECODE_MCE policy<{'amd64': 'y', 'arm64': '-'}> CONFIG_EDAC_DECODE_MCE mark note -CONFIG_EDAC_AMD64 policy<{'amd64': 'm'}> +CONFIG_EDAC_AMD64 policy<{'amd64': 'm', 'arm64': '-'}> CONFIG_EDAC_AMD64 mark note -CONFIG_INFINIBAND_IPOIB_DEBUG policy<{'amd64': 'y'}> +CONFIG_INFINIBAND_IPOIB_DEBUG policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_INFINIBAND_IPOIB_DEBUG note note mark -CONFIG_NO_HZ_FULL policy<{'amd64': 'y'}> +CONFIG_NO_HZ_FULL policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_NO_HZ_FULL note mark note -CONFIG_NO_HZ_IDLE policy<{'amd64': 'n'}> +CONFIG_NO_HZ_IDLE policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_NO_HZ_IDLE note mark note -CONFIG_HOTPLUG_CPU policy<{'amd64': 'y'}> +CONFIG_HOTPLUG_CPU policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_HOTPLUG_CPU note mark -CONFIG_CATAPULT_PCI policy<{'amd64': 'm'}> +CONFIG_CATAPULT_PCI policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_CATAPULT_PCI mark note -CONFIG_HYPERV policy<{'amd64': 'y'}> +CONFIG_HYPERV policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_HYPERV mark note -CONFIG_HYPERV_STORAGE policy<{'amd64': 'y'}> +CONFIG_HYPERV_STORAGE policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_HYPERV_STORAGE mark note -CONFIG_EFI_VARS policy<{'amd64': 'y'}> +CONFIG_EFI_VARS policy<{'amd64': 'y', 'arm64': '-'}> CONFIG_EFI_VARS mark note -CONFIG_HYPERV_VSOCKETS policy<{'amd64': 'm'}> +CONFIG_HYPERV_VSOCKETS policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_HYPERV_VSOCKETS mark note -CONFIG_HYPERV_INFINIBAND_ND policy<{'amd64': 'm'}> +CONFIG_HYPERV_INFINIBAND_ND policy<{'amd64': 'm', 'arm64': '-'}> CONFIG_HYPERV_INFINIBAND_ND mark note -CONFIG_DEV_DAX policy<{'amd64': 'y'}> +CONFIG_DEV_DAX policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_DEV_DAX mark note -CONFIG_BLK_DEV_PMEM policy<{'amd64': 'y'}> +CONFIG_BLK_DEV_PMEM policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_BLK_DEV_PMEM mark note -CONFIG_OVERLAY_FS_REDIRECT_DIR policy<{'amd64': 'y'}> +CONFIG_OVERLAY_FS_REDIRECT_DIR policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_OVERLAY_FS_REDIRECT_DIR mark note -CONFIG_ND_BLK policy<{'amd64': 'y'}> +CONFIG_ND_BLK policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_ND_BLK mark note -CONFIG_ACPI_NFIT policy<{'amd64': 'y'}> +CONFIG_ACPI_NFIT policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_ACPI_NFIT mark note -CONFIG_RTC_CLASS policy<{'amd64': 'y'}> +CONFIG_RTC_CLASS policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_RTC_CLASS mark note -CONFIG_I2C_PIIX4 policy<{'amd64': 'n'}> +CONFIG_I2C_PIIX4 policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_I2C_PIIX4 mark note -CONFIG_DRM_NOUVEAU policy<{'amd64': 'n'}> +CONFIG_DRM_NOUVEAU policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_DRM_NOUVEAU mark note -CONFIG_BLK_DEV_DRBD policy<{'amd64': 'm'}> +CONFIG_BLK_DEV_DRBD policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_BLK_DEV_DRBD mark note -CONFIG_VBOXGUEST policy<{'amd64': 'n'}> +CONFIG_VBOXGUEST policy<{'amd64': 'n', 'arm64': '-'}> CONFIG_VBOXGUEST mark note -CONFIG_XEN_ACPI_PROCESSOR policy<{'amd64': '-'}> +CONFIG_XEN_ACPI_PROCESSOR policy<{'amd64': '-', 'arm64': '-'}> CONFIG_XEN_ACPI_PROCESSOR mark note -CONFIG_USB_XHCI_HCD policy<{'amd64': 'y'}> +CONFIG_USB_XHCI_HCD policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_USB_XHCI_HCD mark note note -CONFIG_USB_XHCI_PCI policy<{'amd64': 'y'}> +CONFIG_USB_XHCI_PCI policy<{'amd64': 'y', 'arm64': 'y'}> CONFIG_USB_XHCI_PCI mark note note -CONFIG_USB_XHCI_PLATFORM policy<{'amd64': 'm'}> +CONFIG_USB_XHCI_PLATFORM policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_USB_XHCI_PLATFORM mark note note -CONFIG_CONTEXT_TRACKING_FORCE policy<{'amd64': 'n'}> +CONFIG_CONTEXT_TRACKING_FORCE policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_CONTEXT_TRACKING_FORCE flag note -CONFIG_ATARI_PARTITION policy<{'amd64': 'n'}> +CONFIG_ATARI_PARTITION policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_ATARI_PARTITION mark note # From linux-azure initial packaging -CONFIG_POWERCAP policy<{'amd64': 'n'}> +CONFIG_POWERCAP policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_POWERCAP mark note -CONFIG_CHROME_PLATFORMS policy<{'amd64': 'n'}> +CONFIG_CHROME_PLATFORMS policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_CHROME_PLATFORMS mark note -CONFIG_USB_UHCI_HCD policy<{'amd64': 'n'}> +CONFIG_USB_UHCI_HCD policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_USB_UHCI_HCD mark note -CONFIG_USB_EHCI_HCD policy<{'amd64': 'n'}> +CONFIG_USB_EHCI_HCD policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_USB_EHCI_HCD mark note -CONFIG_USB_EHCI_HCD_PLATFORM policy<{'amd64': '-'}> +CONFIG_USB_EHCI_HCD_PLATFORM policy<{'amd64': '-', 'arm64': '-'}> CONFIG_USB_EHCI_HCD_PLATFORM mark note -CONFIG_TOUCHSCREEN_ELAN policy<{'amd64': '-'}> +CONFIG_TOUCHSCREEN_ELAN policy<{'amd64': '-', 'arm64': '-'}> CONFIG_TOUCHSCREEN_ELAN mark note -CONFIG_SOUND policy<{'amd64': 'n'}> +CONFIG_SOUND policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SOUND mark note -CONFIG_FUJITSU_ES policy<{'amd64': 'n'}> +CONFIG_FUJITSU_ES policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_FUJITSU_ES mark note -CONFIG_INPUT_LEDS policy<{'amd64': 'n'}> +CONFIG_INPUT_LEDS policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_INPUT_LEDS mark note -CONFIG_SATA_ACARD_AHCI policy<{'amd64': 'n'}> +CONFIG_SATA_ACARD_AHCI policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_ACARD_AHCI mark note -CONFIG_SATA_INIC162X policy<{'amd64': 'n'}> +CONFIG_SATA_INIC162X policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_INIC162X mark note -CONFIG_SATA_MV policy<{'amd64': 'n'}> +CONFIG_SATA_MV policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_MV mark note -CONFIG_SATA_NV policy<{'amd64': 'n'}> +CONFIG_SATA_NV policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_NV mark note -CONFIG_SATA_PROMISE policy<{'amd64': 'n'}> +CONFIG_SATA_PROMISE policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_PROMISE mark note -CONFIG_SATA_QSTOR policy<{'amd64': 'n'}> +CONFIG_SATA_QSTOR policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_QSTOR mark note -CONFIG_SATA_SIL policy<{'amd64': 'n'}> +CONFIG_SATA_SIL policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_SIL mark note -CONFIG_SATA_SIL24 policy<{'amd64': 'n'}> +CONFIG_SATA_SIL24 policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_SIL24 mark note -CONFIG_SATA_SIS policy<{'amd64': 'n'}> +CONFIG_SATA_SIS policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_SIS mark note -CONFIG_SATA_SVW policy<{'amd64': 'n'}> +CONFIG_SATA_SVW policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_SVW mark note -CONFIG_SATA_SX4 policy<{'amd64': 'n'}> +CONFIG_SATA_SX4 policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_SX4 mark note -CONFIG_SATA_ULI policy<{'amd64': 'n'}> +CONFIG_SATA_ULI policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_ULI mark note -CONFIG_SATA_VIA policy<{'amd64': 'n'}> +CONFIG_SATA_VIA policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_VIA mark note -CONFIG_SATA_VITESSE policy<{'amd64': 'n'}> +CONFIG_SATA_VITESSE policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_VITESSE mark note -CONFIG_SATA_ZPODD policy<{'amd64': 'n'}> +CONFIG_SATA_ZPODD policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_SATA_ZPODD mark note -CONFIG_HYPERV_IOMMU policy<{'amd64': 'y'}> +CONFIG_HYPERV_IOMMU policy<{'amd64': 'y', 'arm64': '-'}> CONFIG_HYPERV_IOMMU mark note -CONFIG_LOOPBACK_TARGET policy<{'amd64': 'm'}> +CONFIG_LOOPBACK_TARGET policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_LOOPBACK_TARGET mark note # Changes made to the generic kernel that are not necessary in the Azure kernel -CONFIG_REGULATOR_TWL4030 policy<{'amd64': '-'}> +CONFIG_REGULATOR_TWL4030 policy<{'amd64': '-', 'arm64': '-'}> CONFIG_REGULATOR_TWL4030 note -CONFIG_GPIO_TWL4030 policy<{'amd64': '-'}> +CONFIG_GPIO_TWL4030 policy<{'amd64': '-', 'arm64': '-'}> CONFIG_GPIO_TWL4030 note -CONFIG_SOUND_OSS_CORE_PRECLAIM policy<{'amd64': '-'}> +CONFIG_SOUND_OSS_CORE_PRECLAIM policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SOUND_OSS_CORE_PRECLAIM note -CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC policy<{'amd64': '-'}> +CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC note -CONFIG_SND_SOC_SOF_HDA_LINK policy<{'amd64': '-'}> +CONFIG_SND_SOC_SOF_HDA_LINK policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_SOF_HDA_LINK note -CONFIG_SND_SOC_SOF_NOCODEC_SUPPORT policy<{'amd64': '-'}> +CONFIG_SND_SOC_SOF_NOCODEC_SUPPORT policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_SOF_NOCODEC_SUPPORT note -CONFIG_SND_SOC_SOF_HDA_ALWAYS_ENABLE_DMI_L1 policy<{'amd64': '-'}> +CONFIG_SND_SOC_SOF_HDA_ALWAYS_ENABLE_DMI_L1 policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_SOF_HDA_ALWAYS_ENABLE_DMI_L1 note -CONFIG_NETWORK_PHY_TIMESTAMPING policy<{'amd64': 'n'}> +CONFIG_NETWORK_PHY_TIMESTAMPING policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_NETWORK_PHY_TIMESTAMPING note -CONFIG_SND_SOC_INTEL_CML_H policy<{'amd64': '-'}> +CONFIG_SND_SOC_INTEL_CML_H policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_INTEL_CML_H note -CONFIG_SND_SOC_SOF_HDA_COMMON_HDMI_CODEC policy<{'amd64': '-'}> +CONFIG_SND_SOC_SOF_HDA_COMMON_HDMI_CODEC policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_SOF_HDA_COMMON_HDMI_CODEC note -CONFIG_SND_SOC_INTEL_CML_LP policy<{'amd64': '-'}> +CONFIG_SND_SOC_INTEL_CML_LP policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_INTEL_CML_LP note -CONFIG_SND_SOC_INTEL_CFL policy<{'amd64': '-'}> +CONFIG_SND_SOC_INTEL_CFL policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_INTEL_CFL note -CONFIG_LATENCYTOP policy<{'amd64': '-'}> +CONFIG_LATENCYTOP policy<{'amd64': '-', 'arm64': '-'}> CONFIG_LATENCYTOP note -CONFIG_USB_OHCI_HCD policy<{'amd64': '-'}> +CONFIG_USB_OHCI_HCD policy<{'amd64': '-', 'arm64': '-'}> CONFIG_USB_OHCI_HCD note -CONFIG_SND_SOC_INTEL_SKYLAKE policy<{'amd64': '-'}> +CONFIG_SND_SOC_INTEL_SKYLAKE policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_INTEL_SKYLAKE note -CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC policy<{'amd64': '-'}> +CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC note -CONFIG_SND_SOC_INTEL_CNL policy<{'amd64': '-'}> +CONFIG_SND_SOC_INTEL_CNL policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_INTEL_CNL note -CONFIG_X86_UV policy<{'amd64': 'n'}> +CONFIG_X86_UV policy<{'amd64': 'n', 'arm64': 'n'}> CONFIG_X86_UV note -CONFIG_SND_SOC_AMD_RENOIR policy<{'amd64': '-'}> +CONFIG_SND_SOC_AMD_RENOIR policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_AMD_RENOIR note -CONFIG_SND_SOC_AMD_RENOIR_MACH policy<{'amd64': '-'}> +CONFIG_SND_SOC_AMD_RENOIR_MACH policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SND_SOC_AMD_RENOIR_MACH note -CONFIG_BT_HS policy<{'amd64': '-'}> +CONFIG_BT_HS policy<{'amd64': '-', 'arm64': '-'}> CONFIG_BT_HS mark note -CONFIG_SPI_INTEL_SPI_PCI policy<{'amd64': '-'}> +CONFIG_SPI_INTEL_SPI_PCI policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SPI_INTEL_SPI_PCI note -CONFIG_MTD_DOCG3 policy<{'amd64': '-'}> +CONFIG_MTD_DOCG3 policy<{'amd64': '-', 'arm64': '-'}> CONFIG_MTD_DOCG3 note -CONFIG_SAMPLE_TRACE_PRINTK policy<{'amd64': '-'}> +CONFIG_SAMPLE_TRACE_PRINTK policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SAMPLE_TRACE_PRINTK note -CONFIG_SPI_INTEL_SPI_PLATFORM policy<{'amd64': '-'}> +CONFIG_SPI_INTEL_SPI_PLATFORM policy<{'amd64': '-', 'arm64': '-'}> CONFIG_SPI_INTEL_SPI_PLATFORM note CONFIG_ACCESSIBILITY policy<{'amd64': '-'}> diff --git a/debian.azure/config/arm64/config.common.arm64 b/debian.azure/config/arm64/config.common.arm64 new file mode 100644 index 000000000000..6f0b14ba3ae3 --- /dev/null +++ b/debian.azure/config/arm64/config.common.arm64 @@ -0,0 +1,40 @@ +# +# Config options for config.common.arm64 automatically generated by splitconfig.pl +# +CONFIG_ACPI_REDUCED_HARDWARE_ONLY=y +CONFIG_ARCH_MMAP_RND_BITS=18 +CONFIG_ARCH_MMAP_RND_BITS_MAX=33 +CONFIG_ARCH_MMAP_RND_BITS_MIN=18 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 +CONFIG_ATA_PIIX=m +CONFIG_BROADCOM_PHY=m +CONFIG_CC_VERSION_TEXT="aarch64-linux-gnu-gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0" +CONFIG_CMA=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +CONFIG_CRC8=y +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9 +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_DMA_VIRTUAL_CHANNELS=y +CONFIG_EXTCON=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_GENERIC_PLATFORM=y +# CONFIG_HIBERNATION is not set +# CONFIG_HIO is not set +CONFIG_I2C_SLAVE=y +CONFIG_KVM=y +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_MARVELL_PHY=m +CONFIG_NR_CPUS=256 +CONFIG_OF=y +CONFIG_PGTABLE_LEVELS=4 +CONFIG_PWM=y +CONFIG_USB_CONN_GPIO=m +CONFIG_USB_ROLE_SWITCH=m +CONFIG_VFIO=m +CONFIG_VFIO_IOMMU_TYPE1=m +CONFIG_VFIO_PCI=m +CONFIG_VFIO_VIRQFD=m diff --git a/debian.azure/config/arm64/config.flavour.azure b/debian.azure/config/arm64/config.flavour.azure new file mode 100644 index 000000000000..bdc859da0228 --- /dev/null +++ b/debian.azure/config/arm64/config.flavour.azure @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.azure automatically generated by splitconfig.pl +# diff --git a/debian.azure/config/config.common.ubuntu b/debian.azure/config/config.common.ubuntu index 53badcd62150..2346ce976955 100644 --- a/debian.azure/config/config.common.ubuntu +++ b/debian.azure/config/config.common.ubuntu @@ -50,9 +50,11 @@ CONFIG_ACPI_APEI_PCIEAER=y # CONFIG_ACPI_BATTERY is not set # CONFIG_ACPI_BGRT is not set CONFIG_ACPI_BUTTON=y +CONFIG_ACPI_CCA_REQUIRED=y # CONFIG_ACPI_CMPC is not set # CONFIG_ACPI_CONFIGFS is not set CONFIG_ACPI_CONTAINER=y +CONFIG_ACPI_CPPC_CPUFREQ=m CONFIG_ACPI_CPPC_LIB=y CONFIG_ACPI_CPU_FREQ_PSS=y CONFIG_ACPI_CUSTOM_DSDT_FILE="" @@ -64,22 +66,26 @@ CONFIG_ACPI_DPTF=y CONFIG_ACPI_EC_DEBUGFS=m # CONFIG_ACPI_EXTLOG is not set # CONFIG_ACPI_FAN is not set +CONFIG_ACPI_GENERIC_GSI=y +CONFIG_ACPI_GTDT=y CONFIG_ACPI_HED=y CONFIG_ACPI_HMAT=y CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_HOTPLUG_IOAPIC=y # CONFIG_ACPI_HOTPLUG_MEMORY is not set +CONFIG_ACPI_IORT=y CONFIG_ACPI_IPMI=m CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y CONFIG_ACPI_LPIT=y +CONFIG_ACPI_MCFG=y CONFIG_ACPI_NFIT=y CONFIG_ACPI_NUMA=y # CONFIG_ACPI_PCI_SLOT is not set +CONFIG_ACPI_PPTT=y CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_PROCESSOR_AGGREGATOR=m CONFIG_ACPI_PROCESSOR_CSTATE=y CONFIG_ACPI_PROCESSOR_IDLE=y -# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set # CONFIG_ACPI_REV_OVERRIDE_POSSIBLE is not set # CONFIG_ACPI_SBS is not set CONFIG_ACPI_SLEEP=y @@ -114,6 +120,15 @@ CONFIG_AGP_AMD64=y CONFIG_AGP_INTEL=y CONFIG_AGP_SIS=m CONFIG_AGP_VIA=y +CONFIG_AHCI_BRCM=m +CONFIG_AHCI_CEVA=m +CONFIG_AHCI_IMX=y +CONFIG_AHCI_MTK=m +CONFIG_AHCI_MVEBU=m +CONFIG_AHCI_QORIQ=m +# CONFIG_AHCI_SUNXI is not set +CONFIG_AHCI_TEGRA=m +CONFIG_AHCI_XGENE=m CONFIG_AIC79XX_CMDS_PER_DEVICE=32 # CONFIG_AIC79XX_DEBUG_ENABLE is not set CONFIG_AIC79XX_DEBUG_MASK=0 @@ -136,6 +151,8 @@ CONFIG_ALTERA_MSGDMA=m # CONFIG_ALTERA_PR_IP_CORE is not set # CONFIG_ALTERA_STAPL is not set # CONFIG_ALTERA_TSE is not set +CONFIG_AL_FIC=y +CONFIG_AMBA_PL08X=y CONFIG_AMDTEE=m CONFIG_AMD_IOMMU=y CONFIG_AMD_IOMMU_V2=m @@ -148,6 +165,7 @@ CONFIG_AMD_NUMA=y # CONFIG_AMD_SFH_HID is not set CONFIG_AMIGA_PARTITION=y # CONFIG_AMILO_RFKILL is not set +CONFIG_AMLOGIC_THERMAL=m CONFIG_ANDROID=y CONFIG_ANDROID_BINDERFS=m CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder" @@ -158,8 +176,20 @@ CONFIG_APDS9802ALS=m CONFIG_APPLE_MFI_FASTCHARGE=m CONFIG_APPLE_PROPERTIES=y CONFIG_APPLICOM=m +CONFIG_APQ_GCC_8084=m +CONFIG_APQ_MMCC_8084=m CONFIG_AQTION=m # CONFIG_AQUANTIA_PHY is not set +CONFIG_ARCH_ACTIONS=y +CONFIG_ARCH_AGILEX=y +# CONFIG_ARCH_ALPINE is not set +CONFIG_ARCH_BCM2835=y +CONFIG_ARCH_BCM4908=y +CONFIG_ARCH_BCM_IPROC=y +CONFIG_ARCH_BERLIN=y +CONFIG_ARCH_BINFMT_ELF_STATE=y +CONFIG_ARCH_BITMAIN=y +CONFIG_ARCH_BRCMSTB=y CONFIG_ARCH_CLOCKSOURCE_INIT=y CONFIG_ARCH_CPUIDLE_HALTPOLL=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y @@ -168,6 +198,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y CONFIG_ARCH_ENABLE_THP_MIGRATION=y +# CONFIG_ARCH_EXYNOS is not set CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y CONFIG_ARCH_HAS_ADD_PAGES=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y @@ -177,6 +208,7 @@ CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y CONFIG_ARCH_HAS_DEBUG_WX=y CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y CONFIG_ARCH_HAS_EARLY_DEBUG=y CONFIG_ARCH_HAS_ELF_RANDOMIZE=y CONFIG_ARCH_HAS_FAST_MULTIPLIER=y @@ -186,6 +218,7 @@ CONFIG_ARCH_HAS_FORTIFY_SOURCE=y CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y CONFIG_ARCH_HAS_GIGANTIC_PAGE=y CONFIG_ARCH_HAS_KCOV=y +CONFIG_ARCH_HAS_KEEPINITRD=y CONFIG_ARCH_HAS_KEXEC_PURGATORY=y CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y CONFIG_ARCH_HAS_MEM_ENCRYPT=y @@ -194,34 +227,98 @@ CONFIG_ARCH_HAS_PKEYS=y CONFIG_ARCH_HAS_PMEM_API=y CONFIG_ARCH_HAS_PTE_DEVMAP=y CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_ARCH_HAS_RELR=y +CONFIG_ARCH_HAS_RESET_CONTROLLER=y +CONFIG_ARCH_HAS_SETUP_DMA_OPS=y CONFIG_ARCH_HAS_SET_DIRECT_MAP=y CONFIG_ARCH_HAS_SET_MEMORY=y CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y +CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y +CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +CONFIG_ARCH_HAVE_ELF_PROT=y CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y CONFIG_ARCH_HIBERNATION_HEADER=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_HISI=y +CONFIG_ARCH_INLINE_READ_LOCK=y +CONFIG_ARCH_INLINE_READ_LOCK_BH=y +CONFIG_ARCH_INLINE_READ_LOCK_IRQ=y +CONFIG_ARCH_INLINE_READ_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_READ_UNLOCK=y +CONFIG_ARCH_INLINE_READ_UNLOCK_BH=y +CONFIG_ARCH_INLINE_READ_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_READ_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_INLINE_SPIN_LOCK=y +CONFIG_ARCH_INLINE_SPIN_LOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_LOCK_IRQ=y +CONFIG_ARCH_INLINE_SPIN_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_SPIN_TRYLOCK=y +CONFIG_ARCH_INLINE_SPIN_TRYLOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_BH=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_INLINE_WRITE_LOCK=y +CONFIG_ARCH_INLINE_WRITE_LOCK_BH=y +CONFIG_ARCH_INLINE_WRITE_LOCK_IRQ=y +CONFIG_ARCH_INLINE_WRITE_LOCK_IRQSAVE=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_BH=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE=y +CONFIG_ARCH_K3=y +CONFIG_ARCH_KEEMBAY=y +CONFIG_ARCH_KEEP_MEMBLOCK=y +CONFIG_ARCH_LAYERSCAPE=y +CONFIG_ARCH_LG1K=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_ARCH_MEDIATEK=y CONFIG_ARCH_MEMORY_PROBE=y +CONFIG_ARCH_MESON=y CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y -CONFIG_ARCH_MMAP_RND_BITS=28 -CONFIG_ARCH_MMAP_RND_BITS_MAX=32 -CONFIG_ARCH_MMAP_RND_BITS_MIN=28 -CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 -CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 +CONFIG_ARCH_MVEBU=y +CONFIG_ARCH_MXC=y CONFIG_ARCH_PROC_KCORE_TEXT=y +CONFIG_ARCH_QCOM=y +CONFIG_ARCH_R8A774A1=y +CONFIG_ARCH_R8A774B1=y +CONFIG_ARCH_R8A774C0=y +CONFIG_ARCH_R8A774E1=y +CONFIG_ARCH_R8A77950=y +CONFIG_ARCH_R8A77951=y +CONFIG_ARCH_R8A77960=y +CONFIG_ARCH_R8A77961=y +CONFIG_ARCH_R8A77965=y +CONFIG_ARCH_R8A77970=y +CONFIG_ARCH_R8A77980=y +CONFIG_ARCH_R8A77990=y +CONFIG_ARCH_R8A77995=y +CONFIG_ARCH_R8A779A0=y CONFIG_ARCH_RANDOM=y +CONFIG_ARCH_RCAR_GEN3=y +CONFIG_ARCH_REALTEK=y +CONFIG_ARCH_RENESAS=y +CONFIG_ARCH_ROCKCHIP=y +CONFIG_ARCH_S32=y +CONFIG_ARCH_SEATTLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ARCH_SPARSEMEM_DEFAULT=y CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARX5=y +CONFIG_ARCH_SPRD=y CONFIG_ARCH_STACKWALK=y +CONFIG_ARCH_STRATIX10=y +CONFIG_ARCH_SUNXI=y CONFIG_ARCH_SUPPORTS_ACPI=y CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y @@ -230,23 +327,41 @@ CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_SYNQUACER=y +CONFIG_ARCH_TEGRA=y +CONFIG_ARCH_TEGRA_132_SOC=y +CONFIG_ARCH_TEGRA_186_SOC=y +CONFIG_ARCH_TEGRA_194_SOC=y +CONFIG_ARCH_TEGRA_210_SOC=y +CONFIG_ARCH_TEGRA_234_SOC=y +CONFIG_ARCH_THUNDER=y +CONFIG_ARCH_THUNDER2=y +# CONFIG_ARCH_UNIPHIER is not set CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y CONFIG_ARCH_USES_PG_UNCACHED=y CONFIG_ARCH_USE_BUILTIN_BSWAP=y CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_USE_GNU_PROPERTY=y CONFIG_ARCH_USE_MEMREMAP_PROT=y CONFIG_ARCH_USE_QUEUED_RWLOCKS=y CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y CONFIG_ARCH_USE_SYM_ANNOTATIONS=y +CONFIG_ARCH_VEXPRESS=y +CONFIG_ARCH_VISCONTI=y CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y CONFIG_ARCH_WANTS_THP_SWAP=y CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y +CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y +CONFIG_ARCH_WANT_FRAME_POINTERS=y CONFIG_ARCH_WANT_GENERAL_HUGETLB=y CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y +CONFIG_ARCH_XGENE=y +# CONFIG_ARCH_ZX is not set +CONFIG_ARCH_ZYNQMP=y CONFIG_ARCNET=m CONFIG_ARCNET_1051=m CONFIG_ARCNET_1201=m @@ -257,6 +372,142 @@ CONFIG_ARCNET_COM90xx=m CONFIG_ARCNET_COM90xxIO=m CONFIG_ARCNET_RAW=m CONFIG_ARCNET_RIM_I=m +CONFIG_ARCX_ANYBUS_CONTROLLER=m +CONFIG_ARM64=y +# CONFIG_ARM64_16K_PAGES is not set +CONFIG_ARM64_4K_PAGES=y +# CONFIG_ARM64_64K_PAGES is not set +CONFIG_ARM64_ACPI_PARKING_PROTOCOL=y +CONFIG_ARM64_AMU_EXTN=y +CONFIG_ARM64_AS_HAS_MTE=y +CONFIG_ARM64_BTI=y +CONFIG_ARM64_BTI_KERNEL=y +CONFIG_ARM64_CNP=y +CONFIG_ARM64_CONT_PMD_SHIFT=4 +CONFIG_ARM64_CONT_PTE_SHIFT=4 +CONFIG_ARM64_CRYPTO=y +# CONFIG_ARM64_DEBUG_PRIORITY_MASKING is not set +CONFIG_ARM64_E0PD=y +CONFIG_ARM64_ERRATUM_1024718=y +CONFIG_ARM64_ERRATUM_1165522=y +CONFIG_ARM64_ERRATUM_1286807=y +CONFIG_ARM64_ERRATUM_1319367=y +CONFIG_ARM64_ERRATUM_1418040=y +CONFIG_ARM64_ERRATUM_1463225=y +CONFIG_ARM64_ERRATUM_1508412=y +CONFIG_ARM64_ERRATUM_1530923=y +CONFIG_ARM64_ERRATUM_1542419=y +CONFIG_ARM64_ERRATUM_819472=y +CONFIG_ARM64_ERRATUM_824069=y +CONFIG_ARM64_ERRATUM_826319=y +CONFIG_ARM64_ERRATUM_827319=y +CONFIG_ARM64_ERRATUM_832075=y +CONFIG_ARM64_ERRATUM_834220=y +CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_ERRATUM_845719=y +CONFIG_ARM64_ERRATUM_858921=y +CONFIG_ARM64_HW_AFDBM=y +CONFIG_ARM64_LSE_ATOMICS=y +CONFIG_ARM64_MODULE_PLTS=y +CONFIG_ARM64_MTE=y +CONFIG_ARM64_PAGE_SHIFT=12 +CONFIG_ARM64_PAN=y +CONFIG_ARM64_PA_BITS=48 +CONFIG_ARM64_PA_BITS_48=y +CONFIG_ARM64_PMEM=y +CONFIG_ARM64_PSEUDO_NMI=y +CONFIG_ARM64_PTR_AUTH=y +CONFIG_ARM64_RAS_EXTN=y +# CONFIG_ARM64_RELOC_TEST is not set +CONFIG_ARM64_SVE=y +CONFIG_ARM64_SW_TTBR0_PAN=y +CONFIG_ARM64_TAGGED_ADDR_ABI=y +CONFIG_ARM64_TLB_RANGE=y +CONFIG_ARM64_USE_LSE_ATOMICS=y +CONFIG_ARM64_VA_BITS=48 +# CONFIG_ARM64_VA_BITS_39 is not set +CONFIG_ARM64_VA_BITS_48=y +CONFIG_ARM64_VHE=y +CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y +CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y +CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y +CONFIG_ARMADA_37XX_CLK=y +CONFIG_ARMADA_37XX_RWTM_MBOX=m +CONFIG_ARMADA_37XX_WATCHDOG=m +CONFIG_ARMADA_AP806_SYSCON=y +CONFIG_ARMADA_AP_CPU_CLK=y +CONFIG_ARMADA_AP_CP_HELPER=y +CONFIG_ARMADA_CP110_SYSCON=y +CONFIG_ARMADA_THERMAL=y +CONFIG_ARMV8_DEPRECATED=y +CONFIG_ARM_ALLWINNER_SUN50I_CPUFREQ_NVMEM=m +CONFIG_ARM_AMBA=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y +CONFIG_ARM_ARMADA_37XX_CPUFREQ=m +CONFIG_ARM_ARMADA_8K_CPUFREQ=m +CONFIG_ARM_BRCMSTB_AVS_CPUFREQ=m +CONFIG_ARM_CCI=y +CONFIG_ARM_CCI400_COMMON=y +CONFIG_ARM_CCI400_PMU=y +CONFIG_ARM_CCI5xx_PMU=y +CONFIG_ARM_CCI_PMU=y +CONFIG_ARM_CCN=y +CONFIG_ARM_CMN=m +CONFIG_ARM_CPUIDLE=y +CONFIG_ARM_DMC620_PMU=m +CONFIG_ARM_DSU_PMU=m +CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_MAX_NR=1 +CONFIG_ARM_GIC_PM=y +CONFIG_ARM_GIC_V2M=y +CONFIG_ARM_GIC_V3=y +CONFIG_ARM_GIC_V3_ITS=y +CONFIG_ARM_GIC_V3_ITS_FSL_MC=y +CONFIG_ARM_GIC_V3_ITS_PCI=y +CONFIG_ARM_IMX6Q_CPUFREQ=m +CONFIG_ARM_IMX8M_DDRC_DEVFREQ=m +CONFIG_ARM_IMX_BUS_DEVFREQ=m +CONFIG_ARM_IMX_CPUFREQ_DT=m +CONFIG_ARM_MEDIATEK_CPUFREQ=m +CONFIG_ARM_MHU=m +CONFIG_ARM_MHU_V2=m +CONFIG_ARM_PL172_MPMC=m +CONFIG_ARM_PMU=y +CONFIG_ARM_PMU_ACPI=y +# CONFIG_ARM_PSCI_CHECKER is not set +CONFIG_ARM_PSCI_CPUIDLE=y +CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y +CONFIG_ARM_PSCI_FW=y +CONFIG_ARM_QCOM_CPUFREQ_HW=m +CONFIG_ARM_QCOM_CPUFREQ_NVMEM=m +CONFIG_ARM_RASPBERRYPI_CPUFREQ=m +CONFIG_ARM_RK3399_DMC_DEVFREQ=m +CONFIG_ARM_SBSA_WATCHDOG=m +CONFIG_ARM_SCMI_CPUFREQ=m +CONFIG_ARM_SCMI_POWER_DOMAIN=m +CONFIG_ARM_SCMI_PROTOCOL=y +CONFIG_ARM_SCPI_CPUFREQ=m +CONFIG_ARM_SCPI_POWER_DOMAIN=m +CONFIG_ARM_SCPI_PROTOCOL=m +CONFIG_ARM_SDE_INTERFACE=y +CONFIG_ARM_SMCCC_SOC_ID=y +CONFIG_ARM_SMC_WATCHDOG=m +CONFIG_ARM_SMMU=y +# CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT is not set +# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set +CONFIG_ARM_SMMU_V3=y +CONFIG_ARM_SMMU_V3_PMU=m +CONFIG_ARM_SMMU_V3_SVA=y +CONFIG_ARM_SP805_WATCHDOG=m +CONFIG_ARM_SPE_PMU=m +CONFIG_ARM_TEGRA124_CPUFREQ=y +CONFIG_ARM_TEGRA186_CPUFREQ=m +CONFIG_ARM_TEGRA194_CPUFREQ=m +CONFIG_ARM_TEGRA20_CPUFREQ=y +CONFIG_ARM_TEGRA_DEVFREQ=m +CONFIG_ARM_TIMER_SP804=y CONFIG_ASHMEM=m CONFIG_ASM_MODVERSIONS=y CONFIG_ASN1=y @@ -270,9 +521,18 @@ CONFIG_ASYNC_CORE=m CONFIG_ASYNC_MEMCPY=m CONFIG_ASYNC_PQ=m CONFIG_ASYNC_RAID6_RECOV=m +CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y +CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y CONFIG_ASYNC_TX_DMA=y +CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y CONFIG_ASYNC_XOR=m CONFIG_AS_AVX512=y +CONFIG_AS_HAS_ARMV8_4=y +CONFIG_AS_HAS_ARMV8_5=y +CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y +CONFIG_AS_HAS_LDAPR=y +CONFIG_AS_HAS_LSE_ATOMICS=y +CONFIG_AS_HAS_PAC=y CONFIG_AS_SHA1_NI=y CONFIG_AS_SHA256_NI=y CONFIG_AS_TPAUSE=y @@ -285,7 +545,6 @@ CONFIG_ATA_BMDMA=y CONFIG_ATA_FORCE=y CONFIG_ATA_GENERIC=y # CONFIG_ATA_OVER_ETH is not set -CONFIG_ATA_PIIX=y CONFIG_ATA_SFF=y CONFIG_ATA_VERBOSE_ERROR=y CONFIG_ATM=m @@ -329,6 +588,9 @@ CONFIG_ATP=m CONFIG_AUDIT=y CONFIG_AUDITSYSCALL=y CONFIG_AUDIT_ARCH=y +CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y +CONFIG_AUDIT_COMPAT_GENERIC=y +CONFIG_AUDIT_GENERIC=y # CONFIG_AUFS_FS is not set CONFIG_AUTOFS4_FS=m CONFIG_AUTOFS_FS=m @@ -337,6 +599,7 @@ CONFIG_AUXILIARY_BUS=y CONFIG_AX25=m CONFIG_AX25_DAMA_SLAVE=y CONFIG_AX88796B_PHY=m +CONFIG_AXI_DMAC=m CONFIG_B44=m CONFIG_B44_PCI=y CONFIG_B44_PCICORE_AUTOSELECT=y @@ -356,12 +619,17 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_DA9052 is not set # CONFIG_BACKLIGHT_GPIO is not set # CONFIG_BACKLIGHT_KTD253 is not set +CONFIG_BACKLIGHT_LED=m +CONFIG_BACKLIGHT_LM3630A=m # CONFIG_BACKLIGHT_LM3639 is not set +CONFIG_BACKLIGHT_LP855X=m # CONFIG_BACKLIGHT_LV5207LP is not set # CONFIG_BACKLIGHT_PCF50633 is not set +CONFIG_BACKLIGHT_PWM=m CONFIG_BACKLIGHT_QCOM_WLED=m # CONFIG_BACKLIGHT_SAHARA is not set # CONFIG_BACKLIGHT_SKY81452 is not set +CONFIG_BACKLIGHT_TPS65217=m # CONFIG_BACKLIGHT_WM831X is not set CONFIG_BALLOON_COMPACTION=y CONFIG_BAREUDP=m @@ -375,6 +643,7 @@ CONFIG_BATMAN_ADV_DAT=y CONFIG_BATMAN_ADV_MCAST=y CONFIG_BATMAN_ADV_NC=y # CONFIG_BATMAN_ADV_TRACING is not set +CONFIG_BATTERY_ACT8945A=m # CONFIG_BATTERY_BQ27XXX is not set CONFIG_BATTERY_CW2015=m # CONFIG_BATTERY_DA9052 is not set @@ -393,7 +662,16 @@ CONFIG_BCACHE=m CONFIG_BCACHE_ASYNC_REGISTRATION=y # CONFIG_BCACHE_CLOSURES_DEBUG is not set # CONFIG_BCACHE_DEBUG is not set +CONFIG_BCM2711_THERMAL=m +CONFIG_BCM2835_MBOX=y +CONFIG_BCM2835_POWER=y +CONFIG_BCM2835_THERMAL=m +CONFIG_BCM2835_VCHIQ=m +CONFIG_BCM2835_VCHIQ_MMAL=m +CONFIG_BCM2835_WDT=m CONFIG_BCM54140_PHY=m +CONFIG_BCM7038_L1_IRQ=y +CONFIG_BCM7038_WDT=m CONFIG_BCM7XXX_PHY=m CONFIG_BCM84881_PHY=y # CONFIG_BCM87XX_PHY is not set @@ -408,8 +686,14 @@ CONFIG_BCMA_HOST_SOC=y CONFIG_BCMA_POSSIBLE=y CONFIG_BCMA_SFLASH=y CONFIG_BCMGENET=m +CONFIG_BCM_FLEXRM_MBOX=m # CONFIG_BCM_KONA_USB2_PHY is not set CONFIG_BCM_NET_PHYLIB=m +CONFIG_BCM_NS_THERMAL=m +CONFIG_BCM_PDC_MBOX=m +CONFIG_BCM_SBA_RAID=m +CONFIG_BCM_SR_THERMAL=m +CONFIG_BCM_VIDEOCORE=m CONFIG_BE2ISCSI=m CONFIG_BE2NET=m CONFIG_BE2NET_BE2=y @@ -422,6 +706,8 @@ CONFIG_BEFS_FS=m # CONFIG_BFQ_CGROUP_DEBUG is not set CONFIG_BFQ_GROUP_IOSCHED=y CONFIG_BFS_FS=m +CONFIG_BGMAC=y +CONFIG_BGMAC_PLATFORM=y CONFIG_BINARY_PRINTF=y CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=m @@ -520,6 +806,12 @@ CONFIG_BPF_SYSCALL=y # CONFIG_BPQETHER is not set CONFIG_BQL=y CONFIG_BRANCH_PROFILE_NONE=y +CONFIG_BRCMSTB_DPFE=y +CONFIG_BRCMSTB_GISB_ARB=y +CONFIG_BRCMSTB_L2_IRQ=y +CONFIG_BRCMSTB_PM=y +CONFIG_BRCMSTB_THERMAL=m +CONFIG_BRCM_USB_PINMAP=m CONFIG_BRIDGE=m CONFIG_BRIDGE_CFM=y CONFIG_BRIDGE_EBT_802_3=m @@ -547,7 +839,6 @@ CONFIG_BRIDGE_MRP=y CONFIG_BRIDGE_NETFILTER=m CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_VLAN_FILTERING=y -# CONFIG_BROADCOM_PHY is not set CONFIG_BSD_DISKLABEL=y CONFIG_BSD_PROCESS_ACCT=y CONFIG_BSD_PROCESS_ACCT_V3=y @@ -594,6 +885,8 @@ CONFIG_CAN_EMS_PCI=m # CONFIG_CAN_EMS_USB is not set # CONFIG_CAN_ESD_USB2 is not set CONFIG_CAN_F81601=m +CONFIG_CAN_FLEXCAN=m +CONFIG_CAN_GRCAN=m # CONFIG_CAN_GS_USB is not set CONFIG_CAN_GW=m CONFIG_CAN_HI311X=m @@ -614,6 +907,8 @@ CONFIG_CAN_PEAK_PCIEFD=m # CONFIG_CAN_PEAK_USB is not set CONFIG_CAN_PLX_PCI=m CONFIG_CAN_RAW=m +CONFIG_CAN_RCAR=m +CONFIG_CAN_RCAR_CANFD=m CONFIG_CAN_SJA1000=m CONFIG_CAN_SJA1000_ISA=m CONFIG_CAN_SJA1000_PLATFORM=m @@ -622,22 +917,33 @@ CONFIG_CAN_SLCAN=m # CONFIG_CAN_UCAN is not set CONFIG_CAN_VCAN=m CONFIG_CAN_VXCAN=m +CONFIG_CAN_XILINXCAN=m CONFIG_CARDBUS=y CONFIG_CATAPULT_PCI=m +CONFIG_CAVIUM_CPT=m +CONFIG_CAVIUM_ERRATUM_22375=y +CONFIG_CAVIUM_ERRATUM_23144=y +CONFIG_CAVIUM_ERRATUM_23154=y +CONFIG_CAVIUM_ERRATUM_27456=y +CONFIG_CAVIUM_ERRATUM_30115=y +CONFIG_CAVIUM_TX2_ERRATUM_219=y # CONFIG_CB710_CORE is not set CONFIG_CC_CAN_LINK=y CONFIG_CC_CAN_LINK_STATIC=y CONFIG_CC_HAS_ASM_GOTO=y CONFIG_CC_HAS_ASM_INLINE=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y CONFIG_CC_HAS_INT128=y CONFIG_CC_HAS_KASAN_GENERIC=y CONFIG_CC_HAS_SANCOV_TRACE_PC=y CONFIG_CC_HAS_SANE_STACKPROTECTOR=y +CONFIG_CC_HAS_SIGN_RETURN_ADDRESS=y CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y +CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y CONFIG_CC_IS_GCC=y CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set -CONFIG_CC_VERSION_TEXT="gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0" CONFIG_CDNS_I3C_MASTER=m CONFIG_CDROM=y CONFIG_CDROM_PKTCDVD=m @@ -645,9 +951,14 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8 # CONFIG_CDROM_PKTCDVD_WCACHE is not set # CONFIG_CEC_CH7322 is not set CONFIG_CEC_CORE=m +CONFIG_CEC_MESON_AO=m +CONFIG_CEC_MESON_G12A_AO=m CONFIG_CEC_NOTIFIER=y +CONFIG_CEC_PIN=y +# CONFIG_CEC_PIN_ERROR_INJ is not set CONFIG_CEC_SECO=m CONFIG_CEC_SECO_RC=y +CONFIG_CEC_TEGRA=m CONFIG_CEPH_FS=m CONFIG_CEPH_FSCACHE=y CONFIG_CEPH_FS_POSIX_ACL=y @@ -684,22 +995,29 @@ CONFIG_CGROUP_WRITEBACK=y CONFIG_CHARGER_ADP5061=m CONFIG_CHARGER_BD99954=m # CONFIG_CHARGER_BQ2415X is not set +CONFIG_CHARGER_BQ24190=m # CONFIG_CHARGER_BQ24257 is not set # CONFIG_CHARGER_BQ24735 is not set # CONFIG_CHARGER_BQ2515X is not set # CONFIG_CHARGER_BQ25890 is not set # CONFIG_CHARGER_BQ25980 is not set +CONFIG_CHARGER_DETECTOR_MAX14656=m # CONFIG_CHARGER_GPIO is not set +CONFIG_CHARGER_ISP1704=m # CONFIG_CHARGER_LP8727 is not set CONFIG_CHARGER_LT3651=m # CONFIG_CHARGER_MANAGER is not set # CONFIG_CHARGER_MAX14577 is not set +CONFIG_CHARGER_MAX77650=m # CONFIG_CHARGER_MAX77693 is not set # CONFIG_CHARGER_MAX8903 is not set # CONFIG_CHARGER_PCF50633 is not set # CONFIG_CHARGER_RT9455 is not set # CONFIG_CHARGER_SBS is not set +CONFIG_CHARGER_SC2731=m # CONFIG_CHARGER_SMB347 is not set +CONFIG_CHARGER_TPS65217=m +CONFIG_CHARGER_UCS1002=m CONFIG_CHARLCD=m CONFIG_CHARLCD_BL_FLASH=y # CONFIG_CHARLCD_BL_OFF is not set @@ -740,25 +1058,191 @@ CONFIG_CLEANCACHE=y CONFIG_CLKBLD_I8253=y CONFIG_CLKDEV_LOOKUP=y CONFIG_CLKEVT_I8253=y +CONFIG_CLKSRC_MMIO=y +CONFIG_CLK_ACTIONS=y +CONFIG_CLK_BCM2711_DVP=m +CONFIG_CLK_BCM2835=y +CONFIG_CLK_BCM_NS2=y +CONFIG_CLK_BCM_SR=y +CONFIG_CLK_GFM_LPASS_SM8250=m +CONFIG_CLK_IMX8MM=y +CONFIG_CLK_IMX8MN=y +CONFIG_CLK_IMX8MP=y +CONFIG_CLK_IMX8MQ=y +CONFIG_CLK_IMX8QXP=y +CONFIG_CLK_LS1028A_PLLDIG=m +CONFIG_CLK_OWL_S500=y +CONFIG_CLK_OWL_S700=y +CONFIG_CLK_OWL_S900=y +CONFIG_CLK_PX30=y +CONFIG_CLK_QORIQ=y +CONFIG_CLK_R8A774A1=y +CONFIG_CLK_R8A774B1=y +CONFIG_CLK_R8A774C0=y +CONFIG_CLK_R8A774E1=y +CONFIG_CLK_R8A7795=y +CONFIG_CLK_R8A77960=y +CONFIG_CLK_R8A77961=y +CONFIG_CLK_R8A77965=y +CONFIG_CLK_R8A77970=y +CONFIG_CLK_R8A77980=y +CONFIG_CLK_R8A77990=y +CONFIG_CLK_R8A77995=y +CONFIG_CLK_R8A779A0=y +CONFIG_CLK_R9A06G032=y +CONFIG_CLK_RASPBERRYPI=m +CONFIG_CLK_RCAR_GEN3_CPG=y +CONFIG_CLK_RCAR_USB2_CLOCK_SEL=y +CONFIG_CLK_RENESAS=y +CONFIG_CLK_RENESAS_CPG_MSSR=y +CONFIG_CLK_RENESAS_DIV6=y +CONFIG_CLK_RK3308=y +CONFIG_CLK_RK3328=y +CONFIG_CLK_RK3368=y +CONFIG_CLK_RK3399=y +CONFIG_CLK_SP810=y +CONFIG_CLK_SUNXI=y +CONFIG_CLK_SUNXI_CLOCKS=y +CONFIG_CLK_SUNXI_PRCM_SUN6I=y +CONFIG_CLK_SUNXI_PRCM_SUN8I=y +CONFIG_CLK_SUNXI_PRCM_SUN9I=y +CONFIG_CLK_TEGRA_BPMP=y +CONFIG_CLK_VEXPRESS_OSC=y CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_CLONE_BACKWARDS=y CONFIG_CLS_U32_MARK=y # CONFIG_CLS_U32_PERF is not set CONFIG_CLZ_TAB=y -# CONFIG_CMA is not set +CONFIG_CMA_ALIGNMENT=8 +CONFIG_CMA_AREAS=7 +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +CONFIG_CMA_SIZE_MBYTES=32 +# CONFIG_CMA_SIZE_SEL_MAX is not set +CONFIG_CMA_SIZE_SEL_MBYTES=y +# CONFIG_CMA_SIZE_SEL_MIN is not set +# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set +CONFIG_CMDLINE="\"console=ttyAMA0\"" # CONFIG_CMDLINE_BOOL is not set +# CONFIG_CMDLINE_EXTEND is not set +# CONFIG_CMDLINE_FORCE is not set +CONFIG_CMDLINE_FROM_BOOTLOADER=y CONFIG_CMDLINE_PARTITION=y CONFIG_CNIC=m CONFIG_CODA_FS=m # CONFIG_COMEDI is not set CONFIG_COMMON_CLK=y +CONFIG_COMMON_CLK_AXG=y +CONFIG_COMMON_CLK_AXG_AUDIO=m +CONFIG_COMMON_CLK_BM1880=y # CONFIG_COMMON_CLK_CDCE706 is not set +CONFIG_COMMON_CLK_CDCE925=m # CONFIG_COMMON_CLK_CS2000_CP is not set +CONFIG_COMMON_CLK_FIXED_MMIO=y +CONFIG_COMMON_CLK_FSL_FLEXSPI=m +CONFIG_COMMON_CLK_FSL_SAI=y +CONFIG_COMMON_CLK_G12A=y +CONFIG_COMMON_CLK_GXBB=y +CONFIG_COMMON_CLK_HI3516CV300=m +CONFIG_COMMON_CLK_HI3519=m +CONFIG_COMMON_CLK_HI3660=y +CONFIG_COMMON_CLK_HI3670=y +CONFIG_COMMON_CLK_HI3798CV200=m +CONFIG_COMMON_CLK_HI6220=y +CONFIG_COMMON_CLK_HI655X=m +CONFIG_COMMON_CLK_IPROC=y CONFIG_COMMON_CLK_MAX9485=m +CONFIG_COMMON_CLK_MEDIATEK=y +CONFIG_COMMON_CLK_MESON_AO_CLKC=y +CONFIG_COMMON_CLK_MESON_CPU_DYNDIV=y +CONFIG_COMMON_CLK_MESON_DUALDIV=y +CONFIG_COMMON_CLK_MESON_EE_CLKC=y +CONFIG_COMMON_CLK_MESON_MPLL=y +CONFIG_COMMON_CLK_MESON_PHASE=m +CONFIG_COMMON_CLK_MESON_PLL=y +CONFIG_COMMON_CLK_MESON_REGMAP=y +CONFIG_COMMON_CLK_MESON_SCLK_DIV=m +CONFIG_COMMON_CLK_MESON_VID_PLL_DIV=y +CONFIG_COMMON_CLK_MT2712=y +CONFIG_COMMON_CLK_MT2712_BDPSYS=y +CONFIG_COMMON_CLK_MT2712_IMGSYS=y +CONFIG_COMMON_CLK_MT2712_JPGDECSYS=y +CONFIG_COMMON_CLK_MT2712_MFGCFG=y +CONFIG_COMMON_CLK_MT2712_MMSYS=y +CONFIG_COMMON_CLK_MT2712_VDECSYS=y +CONFIG_COMMON_CLK_MT2712_VENCSYS=y +CONFIG_COMMON_CLK_MT6765=y +CONFIG_COMMON_CLK_MT6765_AUDIOSYS=y +CONFIG_COMMON_CLK_MT6765_CAMSYS=y +CONFIG_COMMON_CLK_MT6765_GCESYS=y +CONFIG_COMMON_CLK_MT6765_IMGSYS=y +CONFIG_COMMON_CLK_MT6765_MFGSYS=y +CONFIG_COMMON_CLK_MT6765_MIPI0ASYS=y +CONFIG_COMMON_CLK_MT6765_MIPI0BSYS=y +CONFIG_COMMON_CLK_MT6765_MIPI1ASYS=y +CONFIG_COMMON_CLK_MT6765_MIPI1BSYS=y +CONFIG_COMMON_CLK_MT6765_MIPI2ASYS=y +CONFIG_COMMON_CLK_MT6765_MIPI2BSYS=y +CONFIG_COMMON_CLK_MT6765_MMSYS=y +CONFIG_COMMON_CLK_MT6765_VCODECSYS=y +CONFIG_COMMON_CLK_MT6779=y +CONFIG_COMMON_CLK_MT6779_AUDSYS=y +CONFIG_COMMON_CLK_MT6779_CAMSYS=y +CONFIG_COMMON_CLK_MT6779_IMGSYS=y +CONFIG_COMMON_CLK_MT6779_IPESYS=y +CONFIG_COMMON_CLK_MT6779_MFGCFG=y +CONFIG_COMMON_CLK_MT6779_MMSYS=y +CONFIG_COMMON_CLK_MT6779_VDECSYS=y +CONFIG_COMMON_CLK_MT6779_VENCSYS=y +CONFIG_COMMON_CLK_MT6797=y +CONFIG_COMMON_CLK_MT6797_IMGSYS=y +CONFIG_COMMON_CLK_MT6797_MMSYS=y +CONFIG_COMMON_CLK_MT6797_VDECSYS=y +CONFIG_COMMON_CLK_MT6797_VENCSYS=y +CONFIG_COMMON_CLK_MT7622=y +CONFIG_COMMON_CLK_MT7622_AUDSYS=y +CONFIG_COMMON_CLK_MT7622_ETHSYS=y +CONFIG_COMMON_CLK_MT7622_HIFSYS=y +CONFIG_COMMON_CLK_MT8167=y +CONFIG_COMMON_CLK_MT8167_AUDSYS=y +CONFIG_COMMON_CLK_MT8167_IMGSYS=y +CONFIG_COMMON_CLK_MT8167_MFGCFG=y +CONFIG_COMMON_CLK_MT8167_MMSYS=y +CONFIG_COMMON_CLK_MT8167_VDECSYS=y +CONFIG_COMMON_CLK_MT8173=y +CONFIG_COMMON_CLK_MT8173_MMSYS=y +CONFIG_COMMON_CLK_MT8183=y +CONFIG_COMMON_CLK_MT8183_AUDIOSYS=y +CONFIG_COMMON_CLK_MT8183_CAMSYS=y +CONFIG_COMMON_CLK_MT8183_IMGSYS=y +CONFIG_COMMON_CLK_MT8183_IPU_ADL=y +CONFIG_COMMON_CLK_MT8183_IPU_CONN=y +CONFIG_COMMON_CLK_MT8183_IPU_CORE0=y +CONFIG_COMMON_CLK_MT8183_IPU_CORE1=y +CONFIG_COMMON_CLK_MT8183_MFGCFG=y +CONFIG_COMMON_CLK_MT8183_MMSYS=y +CONFIG_COMMON_CLK_MT8183_VDECSYS=y +CONFIG_COMMON_CLK_MT8183_VENCSYS=y +CONFIG_COMMON_CLK_MT8516=y +CONFIG_COMMON_CLK_MT8516_AUDSYS=y +CONFIG_COMMON_CLK_PWM=m +CONFIG_COMMON_CLK_QCOM=m +CONFIG_COMMON_CLK_RK808=m +CONFIG_COMMON_CLK_ROCKCHIP=y +CONFIG_COMMON_CLK_SCMI=m +CONFIG_COMMON_CLK_SCPI=m +CONFIG_COMMON_CLK_SI514=m CONFIG_COMMON_CLK_SI5341=m # CONFIG_COMMON_CLK_SI5351 is not set CONFIG_COMMON_CLK_SI544=m +CONFIG_COMMON_CLK_SI570=m +CONFIG_COMMON_CLK_VC5=m # CONFIG_COMMON_CLK_WM831X is not set +CONFIG_COMMON_CLK_XGENE=y +CONFIG_COMMON_CLK_ZYNQMP=y +CONFIG_COMMON_RESET_HI3660=m +CONFIG_COMMON_RESET_HI6220=m CONFIG_COMPACTION=y # CONFIG_COMPAL_LAPTOP is not set CONFIG_COMPAT=y @@ -786,15 +1270,21 @@ CONFIG_COPS_DAYNA=y CONFIG_COPS_TANGENT=y CONFIG_CORDIC=m CONFIG_COREDUMP=y +# CONFIG_CORESIGHT is not set CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y CONFIG_CORTINA_PHY=m CONFIG_COUNTER=m +CONFIG_CP15_BARRIER_EMULATION=y # CONFIG_CPA_DEBUG is not set CONFIG_CPU5_WDT=m +CONFIG_CPUFREQ_DT=y +CONFIG_CPUFREQ_DT_PLATDEV=y CONFIG_CPUMASK_OFFSTACK=y CONFIG_CPUSETS=y +# CONFIG_CPU_BIG_ENDIAN is not set CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set @@ -807,19 +1297,24 @@ CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_THERMAL=y # CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_HALTPOLL=y CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_IDLE_GOV_MENU=y CONFIG_CPU_IDLE_GOV_TEO=y +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y CONFIG_CPU_ISOLATION=y +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CPU_PM=y CONFIG_CPU_RMAP=y CONFIG_CPU_SUP_AMD=y CONFIG_CPU_SUP_CENTAUR=y CONFIG_CPU_SUP_HYGON=y CONFIG_CPU_SUP_INTEL=y CONFIG_CPU_SUP_ZHAOXIN=y +CONFIG_CPU_THERMAL=y CONFIG_CRAMFS=m CONFIG_CRAMFS_BLOCKDEV=y CONFIG_CRASH_CORE=y @@ -834,7 +1329,6 @@ CONFIG_CRC32_SLICEBY8=y CONFIG_CRC4=m CONFIG_CRC64=m CONFIG_CRC7=m -CONFIG_CRC8=m CONFIG_CRC_CCITT=y CONFIG_CRC_ITU_T=m CONFIG_CRC_T10DIF=y @@ -847,7 +1341,14 @@ CONFIG_CRYPTO_AEAD=y CONFIG_CRYPTO_AEAD2=y CONFIG_CRYPTO_AEGIS128=m CONFIG_CRYPTO_AEGIS128_AESNI_SSE2=m +CONFIG_CRYPTO_AEGIS128_SIMD=y CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_ARM64=m +CONFIG_CRYPTO_AES_ARM64_BS=m +CONFIG_CRYPTO_AES_ARM64_CE=m +CONFIG_CRYPTO_AES_ARM64_CE_BLK=m +CONFIG_CRYPTO_AES_ARM64_CE_CCM=m +CONFIG_CRYPTO_AES_ARM64_NEON_BLK=m CONFIG_CRYPTO_AES_NI_INTEL=m # CONFIG_CRYPTO_AES_TI is not set CONFIG_CRYPTO_AKCIPHER=y @@ -880,6 +1381,7 @@ CONFIG_CRYPTO_CCM=m CONFIG_CRYPTO_CFB=m CONFIG_CRYPTO_CHACHA20=m CONFIG_CRYPTO_CHACHA20POLY1305=m +CONFIG_CRYPTO_CHACHA20_NEON=m CONFIG_CRYPTO_CHACHA20_X86_64=m CONFIG_CRYPTO_CMAC=m CONFIG_CRYPTO_CRC32=m @@ -887,6 +1389,7 @@ CONFIG_CRYPTO_CRC32C=y CONFIG_CRYPTO_CRC32C_INTEL=y CONFIG_CRYPTO_CRC32_PCLMUL=m CONFIG_CRYPTO_CRCT10DIF=y +CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=m CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m CONFIG_CRYPTO_CRYPTD=m CONFIG_CRYPTO_CTR=y @@ -896,18 +1399,52 @@ CONFIG_CRYPTO_CURVE25519_X86=m CONFIG_CRYPTO_DEFLATE=y CONFIG_CRYPTO_DES=m CONFIG_CRYPTO_DES3_EDE_X86_64=m +CONFIG_CRYPTO_DEV_ALLWINNER=y CONFIG_CRYPTO_DEV_AMLOGIC_GXL=m # CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG is not set CONFIG_CRYPTO_DEV_ATMEL_ECC=m CONFIG_CRYPTO_DEV_ATMEL_I2C=m CONFIG_CRYPTO_DEV_ATMEL_SHA204A=m +CONFIG_CRYPTO_DEV_BCM_SPU=m +CONFIG_CRYPTO_DEV_CAVIUM_ZIP=m CONFIG_CRYPTO_DEV_CCP=y CONFIG_CRYPTO_DEV_CCP_CRYPTO=m CONFIG_CRYPTO_DEV_CCP_DD=m # CONFIG_CRYPTO_DEV_CCP_DEBUGFS is not set +CONFIG_CRYPTO_DEV_CCREE=m CONFIG_CRYPTO_DEV_CHELSIO=m +CONFIG_CRYPTO_DEV_CPT=m +CONFIG_CRYPTO_DEV_FSL_CAAM=m +CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=y +CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API_DESC=m +CONFIG_CRYPTO_DEV_FSL_CAAM_COMMON=m +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC=m +CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI=y +# CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG is not set +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC=y +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_COUNT_THLD=255 +CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_TIME_THLD=2048 +CONFIG_CRYPTO_DEV_FSL_CAAM_JR=m +CONFIG_CRYPTO_DEV_FSL_CAAM_PKC_API=y +CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9 +CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y +CONFIG_CRYPTO_DEV_FSL_DPAA2_CAAM=m +CONFIG_CRYPTO_DEV_HISI_HPRE=m +CONFIG_CRYPTO_DEV_HISI_QM=m +CONFIG_CRYPTO_DEV_HISI_SEC=m +CONFIG_CRYPTO_DEV_HISI_SEC2=m +CONFIG_CRYPTO_DEV_HISI_TRNG=m +CONFIG_CRYPTO_DEV_HISI_ZIP=m +CONFIG_CRYPTO_DEV_KEEMBAY_OCS_AES_SM4=m +CONFIG_CRYPTO_DEV_KEEMBAY_OCS_AES_SM4_CTS=y +CONFIG_CRYPTO_DEV_KEEMBAY_OCS_AES_SM4_ECB=y +CONFIG_CRYPTO_DEV_MARVELL=m +CONFIG_CRYPTO_DEV_MARVELL_CESA=m +# CONFIG_CRYPTO_DEV_MXS_DCP is not set CONFIG_CRYPTO_DEV_NITROX=m CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m +CONFIG_CRYPTO_DEV_OCTEONTX_CPT=m CONFIG_CRYPTO_DEV_PADLOCK=y CONFIG_CRYPTO_DEV_PADLOCK_AES=m CONFIG_CRYPTO_DEV_PADLOCK_SHA=m @@ -919,10 +1456,33 @@ CONFIG_CRYPTO_DEV_QAT_4XXX=m # CONFIG_CRYPTO_DEV_QAT_C62XVF is not set CONFIG_CRYPTO_DEV_QAT_DH895xCC=m CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m +CONFIG_CRYPTO_DEV_QCE=m +CONFIG_CRYPTO_DEV_QCE_ENABLE_ALL=y +# CONFIG_CRYPTO_DEV_QCE_ENABLE_SHA is not set +# CONFIG_CRYPTO_DEV_QCE_ENABLE_SKCIPHER is not set +CONFIG_CRYPTO_DEV_QCE_SHA=y +CONFIG_CRYPTO_DEV_QCE_SKCIPHER=y +CONFIG_CRYPTO_DEV_QCE_SW_MAX_LEN=512 +CONFIG_CRYPTO_DEV_QCOM_RNG=m +CONFIG_CRYPTO_DEV_ROCKCHIP=m +CONFIG_CRYPTO_DEV_SA2UL=m CONFIG_CRYPTO_DEV_SAFEXCEL=m +CONFIG_CRYPTO_DEV_SAHARA=m CONFIG_CRYPTO_DEV_SP_CCP=y CONFIG_CRYPTO_DEV_SP_PSP=y +CONFIG_CRYPTO_DEV_SUN4I_SS=m +CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG=y +CONFIG_CRYPTO_DEV_SUN8I_CE=m +# CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG is not set +CONFIG_CRYPTO_DEV_SUN8I_CE_HASH=y +CONFIG_CRYPTO_DEV_SUN8I_CE_PRNG=y +CONFIG_CRYPTO_DEV_SUN8I_CE_TRNG=y +CONFIG_CRYPTO_DEV_SUN8I_SS=m +# CONFIG_CRYPTO_DEV_SUN8I_SS_DEBUG is not set +CONFIG_CRYPTO_DEV_SUN8I_SS_HASH=y +CONFIG_CRYPTO_DEV_SUN8I_SS_PRNG=y CONFIG_CRYPTO_DEV_VIRTIO=m +CONFIG_CRYPTO_DEV_ZYNQMP_AES=m CONFIG_CRYPTO_DH=y CONFIG_CRYPTO_DRBG=y CONFIG_CRYPTO_DRBG_CTR=y @@ -940,6 +1500,7 @@ CONFIG_CRYPTO_FCRYPT=m CONFIG_CRYPTO_GCM=y CONFIG_CRYPTO_GF128MUL=y CONFIG_CRYPTO_GHASH=y +CONFIG_CRYPTO_GHASH_ARM64_CE=m CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m CONFIG_CRYPTO_GLUE_HELPER_X86=m CONFIG_CRYPTO_HASH=y @@ -963,7 +1524,6 @@ CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=m CONFIG_CRYPTO_LIB_DES=m CONFIG_CRYPTO_LIB_POLY1305=m CONFIG_CRYPTO_LIB_POLY1305_GENERIC=m -CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11 CONFIG_CRYPTO_LIB_SHA256=y CONFIG_CRYPTO_LRW=m CONFIG_CRYPTO_LZ4=m @@ -977,6 +1537,7 @@ CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_MICHAEL_MIC=m CONFIG_CRYPTO_NHPOLY1305=m CONFIG_CRYPTO_NHPOLY1305_AVX2=m +CONFIG_CRYPTO_NHPOLY1305_NEON=m CONFIG_CRYPTO_NHPOLY1305_SSE2=m CONFIG_CRYPTO_NULL=y CONFIG_CRYPTO_NULL2=y @@ -984,6 +1545,7 @@ CONFIG_CRYPTO_OFB=m CONFIG_CRYPTO_PCBC=m CONFIG_CRYPTO_PCRYPT=m CONFIG_CRYPTO_POLY1305=m +CONFIG_CRYPTO_POLY1305_NEON=m CONFIG_CRYPTO_POLY1305_X86_64=m CONFIG_CRYPTO_RMD128=m CONFIG_CRYPTO_RMD160=m @@ -1000,18 +1562,26 @@ CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m CONFIG_CRYPTO_SERPENT_AVX_X86_64=m CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA1_ARM64_CE=m CONFIG_CRYPTO_SHA1_SSSE3=m CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA256_ARM64=m CONFIG_CRYPTO_SHA256_SSSE3=m +CONFIG_CRYPTO_SHA2_ARM64_CE=m CONFIG_CRYPTO_SHA3=m +CONFIG_CRYPTO_SHA3_ARM64=m CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA512_ARM64=m +CONFIG_CRYPTO_SHA512_ARM64_CE=m CONFIG_CRYPTO_SHA512_SSSE3=m CONFIG_CRYPTO_SIMD=m CONFIG_CRYPTO_SKCIPHER=y CONFIG_CRYPTO_SKCIPHER2=y CONFIG_CRYPTO_SM2=m CONFIG_CRYPTO_SM3=m +CONFIG_CRYPTO_SM3_ARM64_CE=m CONFIG_CRYPTO_SM4=m +CONFIG_CRYPTO_SM4_ARM64_CE=m CONFIG_CRYPTO_STATS=y CONFIG_CRYPTO_STREEBOG=m CONFIG_CRYPTO_TEST=m @@ -1058,6 +1628,7 @@ CONFIG_DEBUG_BUGVERBOSE=y # CONFIG_DEBUG_CREDENTIALS is not set # CONFIG_DEBUG_DEVRES is not set # CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_EFI is not set # CONFIG_DEBUG_ENTRY is not set # CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_32B is not set # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set @@ -1125,7 +1696,6 @@ CONFIG_DEFAULT_CUBIC=y CONFIG_DEFAULT_HOSTNAME="(none)" CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 CONFIG_DEFAULT_INIT="" -CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 # CONFIG_DEFAULT_RENO is not set CONFIG_DEFAULT_SECURITY_APPARMOR=y # CONFIG_DEFAULT_SECURITY_DAC is not set @@ -1149,6 +1719,7 @@ CONFIG_DELL_WMI_DESCRIPTOR=m CONFIG_DELL_WMI_LED=m # CONFIG_DELL_WMI_SYSMAN is not set CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=m CONFIG_DEVFREQ_GOV_PASSIVE=y CONFIG_DEVFREQ_GOV_PERFORMANCE=y CONFIG_DEVFREQ_GOV_POWERSAVE=y @@ -1162,6 +1733,7 @@ CONFIG_DEVPORT=y CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y CONFIG_DEV_APPLETALK=m +CONFIG_DEV_COREDUMP=y CONFIG_DEV_DAX=y CONFIG_DEV_DAX_HMEM=m CONFIG_DEV_DAX_HMEM_DEVICES=y @@ -1173,6 +1745,7 @@ CONFIG_DL2K=m CONFIG_DLM=m # CONFIG_DLM_DEBUG is not set CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_HEAPS_CMA=y CONFIG_DMABUF_HEAPS_SYSTEM=y # CONFIG_DMABUF_MOVE_NOTIFY is not set # CONFIG_DMABUF_SELFTESTS is not set @@ -1182,14 +1755,22 @@ CONFIG_DMAR_TABLE=y # CONFIG_DMATEST is not set CONFIG_DMA_ACPI=y # CONFIG_DMA_API_DEBUG is not set +CONFIG_DMA_BCM2835=y +CONFIG_DMA_CMA=y CONFIG_DMA_COHERENT_POOL=y +CONFIG_DMA_DECLARE_COHERENT=y +CONFIG_DMA_DIRECT_REMAP=y CONFIG_DMA_ENGINE=y CONFIG_DMA_ENGINE_RAID=y # CONFIG_DMA_FENCE_TRACE is not set # CONFIG_DMA_MAP_BENCHMARK is not set +CONFIG_DMA_NONCOHERENT_MMAP=y +CONFIG_DMA_OF=y CONFIG_DMA_OPS=y +CONFIG_DMA_PERNUMA_CMA=y +CONFIG_DMA_REMAP=y CONFIG_DMA_SHARED_BUFFER=y -CONFIG_DMA_VIRTUAL_CHANNELS=m +CONFIG_DMA_SUN6I=m CONFIG_DMI=y CONFIG_DMIID=y CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y @@ -1239,6 +1820,8 @@ CONFIG_DP83822_PHY=m # CONFIG_DP83867_PHY is not set CONFIG_DP83869_PHY=m CONFIG_DP83TC811_PHY=m +CONFIG_DPAA2_CONSOLE=m +CONFIG_DPAA_ERRATUM_A050385=y # CONFIG_DPM_WATCHDOG is not set CONFIG_DPTF_PCH_FIVR=m CONFIG_DPTF_POWER=m @@ -1255,15 +1838,28 @@ CONFIG_DRM_AMD_DC=y CONFIG_DRM_AMD_DC_DCN=y CONFIG_DRM_AMD_DC_HDCP=y # CONFIG_DRM_AMD_DC_SI is not set +CONFIG_DRM_ANALOGIX_ANX6345=m +CONFIG_DRM_ANALOGIX_ANX7625=m # CONFIG_DRM_ANALOGIX_ANX78XX is not set +CONFIG_DRM_ANALOGIX_DP=m +CONFIG_DRM_ARCPGU=m CONFIG_DRM_AST=m # CONFIG_DRM_BOCHS is not set CONFIG_DRM_BRIDGE=y +CONFIG_DRM_CDNS_DSI=m +CONFIG_DRM_CDNS_MHDP8546=m +CONFIG_DRM_CDNS_MHDP8546_J721E=y +CONFIG_DRM_CHRONTEL_CH7033=m # CONFIG_DRM_CIRRUS_QEMU is not set # CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set # CONFIG_DRM_DEBUG_SELFTEST is not set +CONFIG_DRM_DISPLAY_CONNECTOR=m CONFIG_DRM_DP_AUX_CHARDEV=y CONFIG_DRM_DP_CEC=y +CONFIG_DRM_DW_HDMI=m +CONFIG_DRM_DW_HDMI_CEC=m +# CONFIG_DRM_DW_HDMI_I2S_AUDIO is not set +CONFIG_DRM_DW_MIPI_DSI=m # CONFIG_DRM_ETNAVIV is not set CONFIG_DRM_FBDEV_EMULATION=y # CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set @@ -1274,6 +1870,12 @@ CONFIG_DRM_GEM_SHMEM_HELPER=y CONFIG_DRM_GMA3600=y CONFIG_DRM_GMA500=m CONFIG_DRM_GMA600=y +CONFIG_DRM_HDLCD=m +# CONFIG_DRM_HDLCD_SHOW_UNDERRUN is not set +CONFIG_DRM_HISI_HIBMC=m +CONFIG_DRM_HISI_KIRIN=m +CONFIG_DRM_I2C_ADV7511=m +CONFIG_DRM_I2C_ADV7511_CEC=y # CONFIG_DRM_I2C_CH7006 is not set CONFIG_DRM_I2C_NXP_TDA9950=m # CONFIG_DRM_I2C_NXP_TDA998X is not set @@ -1302,23 +1904,147 @@ CONFIG_DRM_I915_TIMESLICE_DURATION=1 CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250 CONFIG_DRM_I915_USERPTR=y # CONFIG_DRM_I915_WERROR is not set +CONFIG_DRM_IMX_DCSS=m +CONFIG_DRM_KMB_DISPLAY=m CONFIG_DRM_KMS_CMA_HELPER=y CONFIG_DRM_KMS_FB_HELPER=y CONFIG_DRM_KMS_HELPER=m +CONFIG_DRM_KOMEDA=m # CONFIG_DRM_LEGACY is not set +CONFIG_DRM_LIMA=m CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_LONTIUM_LT9611=m +CONFIG_DRM_LONTIUM_LT9611UXC=m +CONFIG_DRM_LVDS_CODEC=m +CONFIG_DRM_MALI_DISPLAY=m +CONFIG_DRM_MEDIATEK=m +CONFIG_DRM_MEDIATEK_HDMI=m +CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW=m +CONFIG_DRM_MESON=m +CONFIG_DRM_MESON_DW_HDMI=m # CONFIG_DRM_MGAG200 is not set CONFIG_DRM_MIPI_DBI=m CONFIG_DRM_MIPI_DSI=y +CONFIG_DRM_MSM=m +CONFIG_DRM_MSM_DP=y +CONFIG_DRM_MSM_DSI=y +CONFIG_DRM_MSM_DSI_10NM_PHY=y +CONFIG_DRM_MSM_DSI_14NM_PHY=y +CONFIG_DRM_MSM_DSI_20NM_PHY=y +CONFIG_DRM_MSM_DSI_28NM_8960_PHY=y +CONFIG_DRM_MSM_DSI_28NM_PHY=y +CONFIG_DRM_MSM_DSI_7NM_PHY=y +CONFIG_DRM_MSM_DSI_PLL=y +CONFIG_DRM_MSM_GPU_STATE=y +# CONFIG_DRM_MSM_GPU_SUDO is not set +CONFIG_DRM_MSM_HDMI_HDCP=y +# CONFIG_DRM_MSM_REGISTER_LOGGING is not set +CONFIG_DRM_MXS=y +CONFIG_DRM_MXSFB=m # CONFIG_DRM_NOUVEAU is not set +CONFIG_DRM_NWL_MIPI_DSI=m +CONFIG_DRM_NXP_PTN3460=m CONFIG_DRM_PANEL=y +CONFIG_DRM_PANEL_ABT_Y030XX067A=m +CONFIG_DRM_PANEL_ARM_VERSATILE=m +CONFIG_DRM_PANEL_ASUS_Z00T_TM5P5_NT35596=m +CONFIG_DRM_PANEL_BOE_HIMAX8279D=m +CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m CONFIG_DRM_PANEL_BRIDGE=y +CONFIG_DRM_PANEL_ELIDA_KD35T133=m +CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m +CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D=m +CONFIG_DRM_PANEL_ILITEK_IL9322=m +CONFIG_DRM_PANEL_ILITEK_ILI9881C=m +CONFIG_DRM_PANEL_INNOLUX_P079ZCA=m +CONFIG_DRM_PANEL_JDI_LT070ME05000=m +CONFIG_DRM_PANEL_KINGDISPLAY_KD097D04=m +CONFIG_DRM_PANEL_LEADTEK_LTK050H3146W=m +CONFIG_DRM_PANEL_LEADTEK_LTK500HD1829=m +CONFIG_DRM_PANEL_LG_LB035Q02=m +CONFIG_DRM_PANEL_LG_LG4573=m +CONFIG_DRM_PANEL_LVDS=m +CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m +CONFIG_DRM_PANEL_NEC_NL8048HL11=m +CONFIG_DRM_PANEL_NOVATEK_NT35510=m +CONFIG_DRM_PANEL_NOVATEK_NT36672A=m +CONFIG_DRM_PANEL_NOVATEK_NT39016=m +CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO=m CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=m +CONFIG_DRM_PANEL_ORISETECH_OTM8009A=m +CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS=m +CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00=m CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +CONFIG_DRM_PANEL_RAYDIUM_RM67191=m +CONFIG_DRM_PANEL_RAYDIUM_RM68200=m +CONFIG_DRM_PANEL_RONBO_RB070D30=m +CONFIG_DRM_PANEL_SAMSUNG_LD9040=m +CONFIG_DRM_PANEL_SAMSUNG_S6D16D0=m +CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2=m +CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m +CONFIG_DRM_PANEL_SAMSUNG_S6E63M0=m +CONFIG_DRM_PANEL_SAMSUNG_S6E63M0_DSI=m +CONFIG_DRM_PANEL_SAMSUNG_S6E63M0_SPI=m +CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01=m +CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0=m +CONFIG_DRM_PANEL_SAMSUNG_SOFEF00=m +CONFIG_DRM_PANEL_SEIKO_43WVF1G=m +CONFIG_DRM_PANEL_SHARP_LQ101R1SX01=m +CONFIG_DRM_PANEL_SHARP_LS037V7DW01=m +CONFIG_DRM_PANEL_SHARP_LS043T1LE01=m +CONFIG_DRM_PANEL_SIMPLE=m +CONFIG_DRM_PANEL_SITRONIX_ST7701=m +CONFIG_DRM_PANEL_SITRONIX_ST7703=m +CONFIG_DRM_PANEL_SITRONIX_ST7789V=m +CONFIG_DRM_PANEL_SONY_ACX424AKP=m +CONFIG_DRM_PANEL_SONY_ACX565AKM=m +CONFIG_DRM_PANEL_TDO_TL070WSH30=m +CONFIG_DRM_PANEL_TPO_TD028TTEC1=m +CONFIG_DRM_PANEL_TPO_TD043MTEA1=m +CONFIG_DRM_PANEL_TPO_TPG110=m +CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=m +CONFIG_DRM_PANEL_VISIONOX_RM69299=m +CONFIG_DRM_PANEL_XINPENG_XPP055C272=m +CONFIG_DRM_PANFROST=m +CONFIG_DRM_PARADE_PS8622=m +CONFIG_DRM_PARADE_PS8640=m +CONFIG_DRM_PL111=m CONFIG_DRM_QXL=m CONFIG_DRM_RADEON=m # CONFIG_DRM_RADEON_USERPTR is not set +CONFIG_DRM_RCAR_CMM=m +CONFIG_DRM_RCAR_DU=m +CONFIG_DRM_RCAR_DW_HDMI=m +CONFIG_DRM_RCAR_LVDS=m +CONFIG_DRM_RCAR_VSP=y +CONFIG_DRM_RCAR_WRITEBACK=y +CONFIG_DRM_ROCKCHIP=m CONFIG_DRM_SCHED=m +CONFIG_DRM_SII902X=m +CONFIG_DRM_SII9234=m +CONFIG_DRM_SIL_SII8620=m +CONFIG_DRM_SIMPLE_BRIDGE=m +CONFIG_DRM_SUN4I=m +CONFIG_DRM_SUN4I_BACKEND=m +CONFIG_DRM_SUN4I_HDMI=m +CONFIG_DRM_SUN4I_HDMI_CEC=y +CONFIG_DRM_SUN6I_DSI=m +CONFIG_DRM_SUN8I_DW_HDMI=m +CONFIG_DRM_SUN8I_MIXER=m +CONFIG_DRM_SUN8I_TCON_TOP=m +CONFIG_DRM_TEGRA=m +# CONFIG_DRM_TEGRA_DEBUG is not set +CONFIG_DRM_TEGRA_STAGING=y +CONFIG_DRM_THINE_THC63LVD1024=m +CONFIG_DRM_TIDSS=m +CONFIG_DRM_TI_SN65DSI86=m +CONFIG_DRM_TI_TFP410=m +CONFIG_DRM_TI_TPD12S015=m +CONFIG_DRM_TOSHIBA_TC358762=m +CONFIG_DRM_TOSHIBA_TC358764=m +CONFIG_DRM_TOSHIBA_TC358767=m +CONFIG_DRM_TOSHIBA_TC358768=m +CONFIG_DRM_TOSHIBA_TC358775=m CONFIG_DRM_TTM=m CONFIG_DRM_TTM_HELPER=m # CONFIG_DRM_UDL is not set @@ -1328,8 +2054,11 @@ CONFIG_DRM_VIRTIO_GPU=m CONFIG_DRM_VKMS=m # CONFIG_DRM_VMWGFX is not set CONFIG_DRM_VRAM_HELPER=m +CONFIG_DRM_ZYNQMP_DPSUB=m CONFIG_DS1682=m CONFIG_DST_CACHE=y +CONFIG_DTC=y +CONFIG_DT_IDLE_STATES=y CONFIG_DUMMY=m CONFIG_DUMMY_CONSOLE=y CONFIG_DUMMY_CONSOLE_COLUMNS=80 @@ -1337,6 +2066,10 @@ CONFIG_DUMMY_CONSOLE_ROWS=25 CONFIG_DUMMY_IRQ=m CONFIG_DWC_XLGMAC=m CONFIG_DWC_XLGMAC_PCI=m +CONFIG_DW_APB_ICTL=y +CONFIG_DW_APB_TIMER=y +CONFIG_DW_APB_TIMER_OF=y +CONFIG_DW_AXI_DMAC=m # CONFIG_DW_DMAC is not set CONFIG_DW_DMAC_CORE=m CONFIG_DW_DMAC_PCI=m @@ -1365,11 +2098,18 @@ CONFIG_EBC_C384_WDT=m CONFIG_ECRYPT_FS=y CONFIG_ECRYPT_FS_MESSAGING=y CONFIG_EDAC=y +CONFIG_EDAC_ALTERA=y +CONFIG_EDAC_ALTERA_ETHERNET=y +CONFIG_EDAC_ALTERA_OCRAM=y +CONFIG_EDAC_ALTERA_QSPI=y +CONFIG_EDAC_ALTERA_SDRAM=y CONFIG_EDAC_AMD64=m # CONFIG_EDAC_AMD64_ERROR_INJECTION is not set CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_BLUEFIELD=m # CONFIG_EDAC_DEBUG is not set CONFIG_EDAC_DECODE_MCE=y +CONFIG_EDAC_DMC520=m CONFIG_EDAC_E752X=m CONFIG_EDAC_I10NM=m CONFIG_EDAC_I3000=m @@ -1382,12 +2122,17 @@ CONFIG_EDAC_I7CORE=m CONFIG_EDAC_I82975X=m CONFIG_EDAC_IE31200=m # CONFIG_EDAC_IGEN6 is not set +CONFIG_EDAC_LAYERSCAPE=m # CONFIG_EDAC_LEGACY_SYSFS is not set CONFIG_EDAC_PND2=m +CONFIG_EDAC_QCOM=m CONFIG_EDAC_SBRIDGE=m CONFIG_EDAC_SKX=m CONFIG_EDAC_SUPPORT=y +CONFIG_EDAC_SYNOPSYS=m +CONFIG_EDAC_THUNDERX=m CONFIG_EDAC_X38=m +CONFIG_EDAC_XGENE=m CONFIG_EDD=y CONFIG_EDD_OFF=y # CONFIG_EEEPC_LAPTOP is not set @@ -1401,6 +2146,7 @@ CONFIG_EEPROM_EE1004=m # CONFIG_EEPROM_MAX6875 is not set CONFIG_EFI=y CONFIG_EFIVAR_FS=y +# CONFIG_EFI_ARMSTUB_DTB_LOADER is not set CONFIG_EFI_BOOTLOADER_CONTROL=m CONFIG_EFI_CAPSULE_LOADER=m CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y @@ -1409,8 +2155,10 @@ CONFIG_EFI_DEV_PATH_PARSER=y CONFIG_EFI_EARLYCON=y CONFIG_EFI_ESRT=y # CONFIG_EFI_FAKE_MEMMAP is not set +CONFIG_EFI_GENERIC_STUB=y CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y CONFIG_EFI_MIXED=y +CONFIG_EFI_PARAMS_FROM_FDT=y CONFIG_EFI_PARTITION=y # CONFIG_EFI_PGT_DUMP is not set CONFIG_EFI_RCI2_TABLE=y @@ -1423,6 +2171,7 @@ CONFIG_EFI_VARS=y CONFIG_EFI_VARS_PSTORE=m # CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set CONFIG_EFS_FS=m +CONFIG_EINT_MTK=y CONFIG_EISA=y CONFIG_EISA_NAMES=y CONFIG_EISA_PCI_EISA=y @@ -1469,7 +2218,17 @@ CONFIG_EXT4_FS=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y CONFIG_EXT4_USE_FOR_EXT2=y -# CONFIG_EXTCON is not set +CONFIG_EXTCON_FSA9480=m +CONFIG_EXTCON_GPIO=m +CONFIG_EXTCON_MAX14577=m +CONFIG_EXTCON_MAX3355=m +CONFIG_EXTCON_MAX77693=m +CONFIG_EXTCON_PTN5150=m +CONFIG_EXTCON_QCOM_SPMI_MISC=m +CONFIG_EXTCON_RT8973A=m +CONFIG_EXTCON_SM5502=m +CONFIG_EXTCON_USBC_TUSB320=m +CONFIG_EXTCON_USB_GPIO=m CONFIG_EXTRA_FIRMWARE="" CONFIG_EZX_PCAP=y # CONFIG_F2FS_CHECK_FS is not set @@ -1500,14 +2259,12 @@ CONFIG_FB=y # CONFIG_FB_3DFX is not set # CONFIG_FB_ARC is not set # CONFIG_FB_ARK is not set +CONFIG_FB_ARMCLCD=m # CONFIG_FB_ASILIANT is not set # CONFIG_FB_ATY is not set # CONFIG_FB_ATY128 is not set CONFIG_FB_BACKLIGHT=m # CONFIG_FB_CARMINE is not set -CONFIG_FB_CFB_COPYAREA=m -CONFIG_FB_CFB_FILLRECT=m -CONFIG_FB_CFB_IMAGEBLIT=m # CONFIG_FB_CIRRUS is not set CONFIG_FB_CMDLINE=y # CONFIG_FB_CYBER2000 is not set @@ -1520,6 +2277,7 @@ CONFIG_FB_HYPERV=m # CONFIG_FB_I740 is not set # CONFIG_FB_IBM_GXT4500 is not set # CONFIG_FB_IMSTT is not set +CONFIG_FB_IMX=m CONFIG_FB_INTEL=m # CONFIG_FB_INTEL_DEBUG is not set CONFIG_FB_INTEL_I2C=y @@ -1529,6 +2287,7 @@ CONFIG_FB_INTEL_I2C=y # CONFIG_FB_MB862XX is not set # CONFIG_FB_METRONOME is not set CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_MX3=y # CONFIG_FB_N411 is not set # CONFIG_FB_NEOMAGIC is not set CONFIG_FB_NOTIFY=y @@ -1541,12 +2300,14 @@ CONFIG_FB_NOTIFY=y # CONFIG_FB_S1D13XXX is not set # CONFIG_FB_S3 is not set # CONFIG_FB_SAVAGE is not set +CONFIG_FB_SH_MOBILE_LCDC=m # CONFIG_FB_SIMPLE is not set # CONFIG_FB_SIS is not set CONFIG_FB_SM501=m # CONFIG_FB_SM712 is not set CONFIG_FB_SM750=m # CONFIG_FB_SMSCUFX is not set +CONFIG_FB_SSD1307=m CONFIG_FB_SYS_COPYAREA=m CONFIG_FB_SYS_FILLRECT=m CONFIG_FB_SYS_FOPS=m @@ -1596,8 +2357,10 @@ CONFIG_FB_VIA_X_COMPATIBILITY=y # CONFIG_FB_VIRTUAL is not set # CONFIG_FB_VOODOO1 is not set # CONFIG_FB_VT8623 is not set +CONFIG_FB_XILINX=m CONFIG_FDDI=y CONFIG_FEALNX=m +CONFIG_FEC=y CONFIG_FHANDLE=y CONFIG_FIB_RULES=y CONFIG_FIELDBUS_DEV=m @@ -1613,14 +2376,18 @@ CONFIG_FM10K=m CONFIG_FONT_8x16=y CONFIG_FONT_8x8=y CONFIG_FONT_SUPPORT=y +CONFIG_FORCE_MAX_ZONEORDER=13 CONFIG_FORTIFY_SOURCE=y CONFIG_FPGA=m # CONFIG_FPGA_BRIDGE is not set # CONFIG_FPGA_DFL is not set # CONFIG_FPGA_MGR_ALTERA_CVP is not set # CONFIG_FPGA_MGR_ALTERA_PS_SPI is not set +CONFIG_FPGA_MGR_ICE40_SPI=m # CONFIG_FPGA_MGR_MACHXO2_SPI is not set +CONFIG_FPGA_MGR_STRATIX10_SOC=m CONFIG_FPGA_MGR_XILINX_SPI=m +CONFIG_FPGA_MGR_ZYNQMP_FPGA=m CONFIG_FRAMEBUFFER_CONSOLE=y # CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y @@ -1635,6 +2402,42 @@ CONFIG_FSCACHE=m # CONFIG_FSCACHE_HISTOGRAM is not set # CONFIG_FSCACHE_OBJECT_LIST is not set CONFIG_FSCACHE_STATS=y +CONFIG_FSI=m +CONFIG_FSI_MASTER_ASPEED=m +CONFIG_FSI_MASTER_GPIO=m +CONFIG_FSI_MASTER_HUB=m +# CONFIG_FSI_NEW_DEV_NODE is not set +CONFIG_FSI_OCC=m +CONFIG_FSI_SBEFIFO=m +CONFIG_FSI_SCOM=m +CONFIG_FSL_BMAN_TEST=m +# CONFIG_FSL_BMAN_TEST_API is not set +CONFIG_FSL_DPAA=y +CONFIG_FSL_DPAA2=y +CONFIG_FSL_DPAA2_ETH=m +CONFIG_FSL_DPAA2_ETHSW=m +CONFIG_FSL_DPAA2_ETH_DCB=y +CONFIG_FSL_DPAA2_PTP_CLOCK=m +CONFIG_FSL_DPAA2_QDMA=m +CONFIG_FSL_DPAA_CHECKING=y +CONFIG_FSL_DPAA_ETH=m +CONFIG_FSL_EDMA=m +CONFIG_FSL_ENETC=m +CONFIG_FSL_ENETC_MDIO=m +CONFIG_FSL_ENETC_PTP_CLOCK=m +CONFIG_FSL_ENETC_QOS=y +CONFIG_FSL_ENETC_VF=m +CONFIG_FSL_ERRATUM_A008585=y +CONFIG_FSL_FMAN=y +CONFIG_FSL_IMX8_DDR_PMU=m +CONFIG_FSL_MC_BUS=y +CONFIG_FSL_MC_DPIO=m +CONFIG_FSL_PQ_MDIO=m +CONFIG_FSL_QDMA=m +# CONFIG_FSL_QMAN_TEST is not set +CONFIG_FSL_RCPM=y +CONFIG_FSL_UCC_HDLC=m +CONFIG_FSL_XGMAC_MDIO=y CONFIG_FSNOTIFY=y CONFIG_FS_DAX=y CONFIG_FS_DAX_PMD=y @@ -1647,11 +2450,13 @@ CONFIG_FS_POSIX_ACL=y CONFIG_FS_VERITY=y CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y # CONFIG_FS_VERITY_DEBUG is not set +CONFIG_FTM_QUADDEC=m CONFIG_FTRACE=y CONFIG_FTRACE_MCOUNT_RECORD=y # CONFIG_FTRACE_RECORD_RECURSION is not set # CONFIG_FTRACE_STARTUP_TEST is not set CONFIG_FTRACE_SYSCALLS=y +CONFIG_FUJITSU_ERRATUM_010001=y # CONFIG_FUJITSU_ES is not set # CONFIG_FUJITSU_LAPTOP is not set # CONFIG_FUJITSU_TABLET is not set @@ -1684,7 +2489,9 @@ CONFIG_GART_IOMMU=y CONFIG_GCC_VERSION=100300 # CONFIG_GCOV_KERNEL is not set CONFIG_GDB_SCRIPTS=y +CONFIG_GEMINI_ETHERNET=m CONFIG_GENERIC_ALLOCATOR=y +CONFIG_GENERIC_ARCH_TOPOLOGY=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_GENERIC_CALIBRATE_DELAY=y @@ -1695,28 +2502,39 @@ CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_GENERIC_CPU=y CONFIG_GENERIC_CPU_AUTOPROBE=y CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_GENERIC_CSUM=y CONFIG_GENERIC_EARLY_IOREMAP=y CONFIG_GENERIC_ENTRY=y CONFIG_GENERIC_FIND_FIRST_BIT=y CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_IRQ_CHIP=y # CONFIG_GENERIC_IRQ_DEBUGFS is not set CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_IRQ_IPI=y CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y CONFIG_GENERIC_IRQ_MIGRATION=y +CONFIG_GENERIC_IRQ_MULTI_HANDLER=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_IRQ_RESERVATION_MODE=y CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y CONFIG_GENERIC_MSI_IRQ=y CONFIG_GENERIC_MSI_IRQ_DOMAIN=y CONFIG_GENERIC_NET_UTILS=y CONFIG_GENERIC_PCI_IOMAP=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_GENERIC_PHY=y +CONFIG_GENERIC_PHY_MIPI_DPHY=y CONFIG_GENERIC_PINCONF=y +CONFIG_GENERIC_PINCTRL_GROUPS=y +CONFIG_GENERIC_PINMUX_FUNCTIONS=y CONFIG_GENERIC_PTDUMP=y +CONFIG_GENERIC_SCHED_CLOCK=y CONFIG_GENERIC_SMP_IDLE_THREAD=y CONFIG_GENERIC_STRNCPY_FROM_USER=y CONFIG_GENERIC_STRNLEN_USER=y @@ -1728,6 +2546,7 @@ CONFIG_GENWQE=m CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0 CONFIG_GFS2_FS=m CONFIG_GFS2_FS_LOCKING_DLM=y +CONFIG_GIANFAR=m CONFIG_GLOB=y # CONFIG_GLOB_SELFTEST is not set CONFIG_GNSS=m @@ -1740,41 +2559,62 @@ CONFIG_GPIOLIB_IRQCHIP=y CONFIG_GPIO_104_DIO_48E=m CONFIG_GPIO_104_IDIO_16=m CONFIG_GPIO_104_IDI_48=m +CONFIG_GPIO_74X164=m +CONFIG_GPIO_74XX_MMIO=m CONFIG_GPIO_ACPI=y +CONFIG_GPIO_ADNP=m CONFIG_GPIO_ADP5588=m CONFIG_GPIO_AGGREGATOR=m +CONFIG_GPIO_ALTERA=m CONFIG_GPIO_AMD8111=m CONFIG_GPIO_AMDPT=m CONFIG_GPIO_AMD_FCH=m CONFIG_GPIO_ARIZONA=m +CONFIG_GPIO_BCM_XGS_IPROC=m CONFIG_GPIO_BD9571MWV=m +CONFIG_GPIO_BRCMSTB=m # CONFIG_GPIO_BT8XX is not set +CONFIG_GPIO_CADENCE=m CONFIG_GPIO_CDEV=y CONFIG_GPIO_CDEV_V1=y CONFIG_GPIO_DA9052=m +CONFIG_GPIO_DAVINCI=y CONFIG_GPIO_DWAPB=m +CONFIG_GPIO_EIC_SPRD=m CONFIG_GPIO_EXAR=m CONFIG_GPIO_F7188X=m -CONFIG_GPIO_GENERIC=m -CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_FTGPIO010=y CONFIG_GPIO_GPIO_MM=m +CONFIG_GPIO_GRGPIO=m +CONFIG_GPIO_GW_PLD=m +CONFIG_GPIO_HISI=m +CONFIG_GPIO_HLWD=m CONFIG_GPIO_ICH=m CONFIG_GPIO_IT87=m CONFIG_GPIO_JANZ_TTL=m +CONFIG_GPIO_LOGICVC=m CONFIG_GPIO_LP3943=m CONFIG_GPIO_LP873X=m +CONFIG_GPIO_LP87565=m CONFIG_GPIO_MADERA=m CONFIG_GPIO_MAX3191X=m CONFIG_GPIO_MAX7300=m CONFIG_GPIO_MAX7301=m CONFIG_GPIO_MAX730X=m CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_MAX77650=m CONFIG_GPIO_MB86S7X=m CONFIG_GPIO_MC33880=m CONFIG_GPIO_MENZ127=m +CONFIG_GPIO_MLXBF=m +CONFIG_GPIO_MLXBF2=m CONFIG_GPIO_ML_IOH=m CONFIG_GPIO_MOCKUP=m +CONFIG_GPIO_MOXTET=m +CONFIG_GPIO_MPC8XXX=y CONFIG_GPIO_MSIC=y +CONFIG_GPIO_MVEBU=y +CONFIG_GPIO_MXC=y CONFIG_GPIO_PCA953X=m CONFIG_GPIO_PCA953X_IRQ=y # CONFIG_GPIO_PCA9570 is not set @@ -1782,23 +2622,44 @@ CONFIG_GPIO_PCF857X=m CONFIG_GPIO_PCIE_IDIO_24=m CONFIG_GPIO_PCI_IDIO_16=m CONFIG_GPIO_PISOSR=m +CONFIG_GPIO_PL061=y +CONFIG_GPIO_PMIC_EIC_SPRD=m +CONFIG_GPIO_RASPBERRYPI_EXP=m +CONFIG_GPIO_RCAR=m CONFIG_GPIO_RDC321X=m +CONFIG_GPIO_REGMAP=m +CONFIG_GPIO_SAMA5D2_PIOBU=m CONFIG_GPIO_SCH=m CONFIG_GPIO_SCH311X=m +CONFIG_GPIO_SIFIVE=y CONFIG_GPIO_SIOX=m +CONFIG_GPIO_SL28CPLD=m +CONFIG_GPIO_SPRD=m +CONFIG_GPIO_STMPE=y +CONFIG_GPIO_SYSCON=m CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_TEGRA=y +CONFIG_GPIO_TEGRA186=y +CONFIG_GPIO_THUNDERX=m CONFIG_GPIO_TPIC2810=m CONFIG_GPIO_TPS65086=m +CONFIG_GPIO_TPS65218=m CONFIG_GPIO_TPS65912=m CONFIG_GPIO_TQMX86=m CONFIG_GPIO_VX855=m +CONFIG_GPIO_WATCHDOG=m +CONFIG_GPIO_WCD934X=m CONFIG_GPIO_WHISKEY_COVE=m CONFIG_GPIO_WINBOND=m CONFIG_GPIO_WM831X=m CONFIG_GPIO_WM8994=m CONFIG_GPIO_WS16C48=m +CONFIG_GPIO_XGENE=y +CONFIG_GPIO_XGENE_SB=m CONFIG_GPIO_XILINX=y +CONFIG_GPIO_XLP=m CONFIG_GPIO_XRA1403=m +CONFIG_GPIO_ZYNQ=m CONFIG_GRACE_PERIOD=m # CONFIG_GREYBUS is not set CONFIG_GRO_CELLS=y @@ -1810,6 +2671,7 @@ CONFIG_HABANA_AI=m CONFIG_HALTPOLL_CPUIDLE=m CONFIG_HAMACHI=m CONFIG_HAMRADIO=y +CONFIG_HANDLE_DOMAIN_IRQ=y CONFIG_HANGCHECK_TIMER=m CONFIG_HARDENED_USERCOPY=y CONFIG_HARDENED_USERCOPY_FALLBACK=y @@ -1825,16 +2687,21 @@ CONFIG_HAVE_ACPI_APEI=y CONFIG_HAVE_ACPI_APEI_NMI=y CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_HAVE_ARCH_BITREVERSE=y CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=y +CONFIG_HAVE_ARCH_COMPILER_H=y CONFIG_HAVE_ARCH_HUGE_VMAP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y CONFIG_HAVE_ARCH_KASAN=y +CONFIG_HAVE_ARCH_KASAN_HW_TAGS=y +CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y CONFIG_HAVE_ARCH_KASAN_VMALLOC=y CONFIG_HAVE_ARCH_KCSAN=y CONFIG_HAVE_ARCH_KGDB=y CONFIG_HAVE_ARCH_MMAP_RND_BITS=y CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_HAVE_ARCH_PFN_VALID=y CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y CONFIG_HAVE_ARCH_SECCOMP=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y @@ -1847,6 +2714,8 @@ CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=y CONFIG_HAVE_ARCH_USERFAULTFD_WP=y CONFIG_HAVE_ARCH_VMAP_STACK=y CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y +CONFIG_HAVE_ARM_SMCCC=y +CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y CONFIG_HAVE_ASM_MODVERSIONS=y CONFIG_HAVE_BOOTMEM_INFO_NODE=y CONFIG_HAVE_CLK=y @@ -1856,6 +2725,7 @@ CONFIG_HAVE_CMPXCHG_LOCAL=y CONFIG_HAVE_CONTEXT_TRACKING=y CONFIG_HAVE_CONTEXT_TRACKING_OFFSTACK=y CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_DEBUG_BUGVERBOSE=y CONFIG_HAVE_DEBUG_KMEMLEAK=y CONFIG_HAVE_DMA_CONTIGUOUS=y CONFIG_HAVE_DYNAMIC_FTRACE=y @@ -1873,6 +2743,7 @@ CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUTEX_CMPXCHG=y CONFIG_HAVE_GCC_PLUGINS=y CONFIG_HAVE_GENERIC_VDSO=y CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y @@ -1893,6 +2764,7 @@ CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KPROBES_ON_FTRACE=y CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_KVM=y +CONFIG_HAVE_KVM_ARCH_TLB_FLUSH_ALL=y CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y CONFIG_HAVE_KVM_EVENTFD=y CONFIG_HAVE_KVM_IRQCHIP=y @@ -1901,6 +2773,7 @@ CONFIG_HAVE_KVM_IRQ_BYPASS=y CONFIG_HAVE_KVM_IRQ_ROUTING=y CONFIG_HAVE_KVM_MSI=y CONFIG_HAVE_KVM_NO_POLL=y +CONFIG_HAVE_KVM_VCPU_RUN_PID_CHANGE=y CONFIG_HAVE_LIVEPATCH=y CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y CONFIG_HAVE_MMIOTRACE_SUPPORT=y @@ -1911,6 +2784,7 @@ CONFIG_HAVE_NET_DSA=y CONFIG_HAVE_NMI=y CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_PATA_PLATFORM=y CONFIG_HAVE_PCI=y CONFIG_HAVE_PCSPKR_PLATFORM=y CONFIG_HAVE_PERF_EVENTS=y @@ -1944,8 +2818,10 @@ CONFIG_HDMI=y # CONFIG_HEADERS_INSTALL is not set CONFIG_HFSPLUS_FS=m CONFIG_HFS_FS=m +CONFIG_HI13X1_GMAC=y +CONFIG_HI3660_MBOX=m +CONFIG_HI6220_MBOX=m CONFIG_HIBERNATE_CALLBACKS=y -CONFIG_HIBERNATION=y CONFIG_HIBERNATION_SNAPSHOT_DEV=y CONFIG_HID=m CONFIG_HIDRAW=y @@ -2024,13 +2900,35 @@ CONFIG_HID_WIIMOTE=m # CONFIG_HID_ZYDACRON is not set CONFIG_HIGH_RES_TIMERS=y CONFIG_HINIC=m -CONFIG_HIO=m +CONFIG_HIP04_ETH=m # CONFIG_HIPPI is not set +CONFIG_HISILICON_ERRATUM_161010101=y +CONFIG_HISILICON_ERRATUM_161600802=y +CONFIG_HISILICON_IRQ_MBIGEN=y +CONFIG_HISILICON_LPC=y +CONFIG_HISI_DMA=m +CONFIG_HISI_FEMAC=m +CONFIG_HISI_HIKEY_USB=m +CONFIG_HISI_PMU=y +CONFIG_HISI_THERMAL=m CONFIG_HIST_TRIGGERS=y # CONFIG_HIST_TRIGGERS_DEBUG is not set +CONFIG_HIX5HD2_GMAC=m CONFIG_HMC6352=m CONFIG_HMEM_REPORTING=y CONFIG_HMM_MIRROR=y +CONFIG_HMS_ANYBUSS_BUS=m +CONFIG_HMS_PROFINET=m +CONFIG_HNS=m +CONFIG_HNS3=m +CONFIG_HNS3_DCB=y +CONFIG_HNS3_ENET=m +CONFIG_HNS3_HCLGE=m +CONFIG_HNS3_HCLGEVF=m +CONFIG_HNS_DSAF=m +CONFIG_HNS_ENET=m +CONFIG_HNS_MDIO=m +CONFIG_HOLES_IN_ZONE=y CONFIG_HOTPLUG_CPU=y CONFIG_HOTPLUG_PCI=y CONFIG_HOTPLUG_PCI_ACPI=y @@ -2056,9 +2954,11 @@ CONFIG_HPFS_FS=m # CONFIG_HSI is not set CONFIG_HSR=m CONFIG_HSU_DMA=m +CONFIG_HT16K33=m CONFIG_HTC_PASIC3=m CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y +# CONFIG_HVC_DCC is not set CONFIG_HVC_DRIVER=y CONFIG_HWLAT_TRACER=y CONFIG_HWMON=y @@ -2066,15 +2966,29 @@ CONFIG_HWMON=y CONFIG_HWMON_VID=m CONFIG_HWPOISON_INJECT=m CONFIG_HWSPINLOCK=y +CONFIG_HWSPINLOCK_OMAP=m +CONFIG_HWSPINLOCK_QCOM=m +CONFIG_HWSPINLOCK_SPRD=m CONFIG_HW_CONSOLE=y +CONFIG_HW_PERF_EVENTS=y CONFIG_HW_RANDOM=y CONFIG_HW_RANDOM_AMD=m CONFIG_HW_RANDOM_BA431=m +CONFIG_HW_RANDOM_BCM2835=m +CONFIG_HW_RANDOM_CAVIUM=m +CONFIG_HW_RANDOM_CCTRNG=m +CONFIG_HW_RANDOM_HISI=m CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_IPROC_RNG200=m +CONFIG_HW_RANDOM_MESON=m +CONFIG_HW_RANDOM_MTK=m +CONFIG_HW_RANDOM_OMAP=m +CONFIG_HW_RANDOM_OPTEE=m CONFIG_HW_RANDOM_TIMERIOMEM=m CONFIG_HW_RANDOM_TPM=y CONFIG_HW_RANDOM_VIA=m CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_HW_RANDOM_XGENE=m CONFIG_HW_RANDOM_XIPHERA=m CONFIG_HYPERV=y CONFIG_HYPERVISOR_GUEST=y @@ -2104,13 +3018,19 @@ CONFIG_I2C_AMD756=m CONFIG_I2C_AMD756_S4882=m CONFIG_I2C_AMD8111=m # CONFIG_I2C_AMD_MP2 is not set +CONFIG_I2C_ARB_GPIO_CHALLENGE=m +CONFIG_I2C_BCM2835=m +CONFIG_I2C_BCM_IPROC=m CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_BRCMSTB=m +# CONFIG_I2C_CADENCE is not set CONFIG_I2C_CBUS_GPIO=m CONFIG_I2C_CHARDEV=m CONFIG_I2C_COMPAT=y # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set # CONFIG_I2C_DEBUG_CORE is not set +CONFIG_I2C_DEMUX_PINCTRL=m CONFIG_I2C_DESIGNWARE_BAYTRAIL=y CONFIG_I2C_DESIGNWARE_CORE=m CONFIG_I2C_DESIGNWARE_PCI=m @@ -2118,43 +3038,73 @@ CONFIG_I2C_DESIGNWARE_PLATFORM=m # CONFIG_I2C_DESIGNWARE_SLAVE is not set # CONFIG_I2C_DIOLAN_U2C is not set # CONFIG_I2C_EMEV2 is not set +CONFIG_I2C_FSI=m CONFIG_I2C_GPIO=m # CONFIG_I2C_GPIO_FAULT_INJECTOR is not set CONFIG_I2C_HELPER_AUTO=y # CONFIG_I2C_HID is not set +CONFIG_I2C_HIX5HD2=m CONFIG_I2C_I801=m +CONFIG_I2C_IMX=m +CONFIG_I2C_IMX_LPI2C=m CONFIG_I2C_ISCH=m CONFIG_I2C_ISMT=m +CONFIG_I2C_MESON=m +CONFIG_I2C_MLXBF=m CONFIG_I2C_MLXCPLD=m +CONFIG_I2C_MT65XX=m CONFIG_I2C_MULTI_INSTANTIATE=m CONFIG_I2C_MUX=m # CONFIG_I2C_MUX_GPIO is not set +CONFIG_I2C_MUX_GPMUX=m CONFIG_I2C_MUX_LTC4306=m # CONFIG_I2C_MUX_MLXCPLD is not set # CONFIG_I2C_MUX_PCA9541 is not set # CONFIG_I2C_MUX_PCA954x is not set +CONFIG_I2C_MUX_PINCTRL=m # CONFIG_I2C_MUX_REG is not set +CONFIG_I2C_MV64XXX=m CONFIG_I2C_NFORCE2=m CONFIG_I2C_NFORCE2_S4985=m +CONFIG_I2C_NOMADIK=m CONFIG_I2C_NVIDIA_GPU=m CONFIG_I2C_OCORES=m +# CONFIG_I2C_OMAP is not set +CONFIG_I2C_OWL=m CONFIG_I2C_PARPORT=m CONFIG_I2C_PCA_PLATFORM=m # CONFIG_I2C_PIIX4 is not set +CONFIG_I2C_PXA=m +CONFIG_I2C_PXA_SLAVE=y +CONFIG_I2C_QCOM_CCI=m +CONFIG_I2C_QCOM_GENI=m +CONFIG_I2C_QUP=m +CONFIG_I2C_RCAR=m +CONFIG_I2C_RIIC=m +CONFIG_I2C_RK3X=m # CONFIG_I2C_ROBOTFUZZ_OSIF is not set CONFIG_I2C_SCMI=m +CONFIG_I2C_SH_MOBILE=m CONFIG_I2C_SIMTEC=m CONFIG_I2C_SIS5595=m CONFIG_I2C_SIS630=m CONFIG_I2C_SIS96X=m -# CONFIG_I2C_SLAVE is not set +CONFIG_I2C_SLAVE_EEPROM=m +# CONFIG_I2C_SLAVE_TESTUNIT is not set CONFIG_I2C_SMBUS=m CONFIG_I2C_STUB=m +CONFIG_I2C_SYNQUACER=m CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TEGRA=m +CONFIG_I2C_TEGRA_BPMP=m +CONFIG_I2C_THUNDERX=m # CONFIG_I2C_TINY_USB is not set +CONFIG_I2C_VERSATILE=m CONFIG_I2C_VIA=m CONFIG_I2C_VIAPRO=m +CONFIG_I2C_XGENE_SLIMPRO=m CONFIG_I2C_XILINX=m +CONFIG_I2C_XLP9XX=m CONFIG_I3C=m CONFIG_I40E=m CONFIG_I40EVF=m @@ -2172,6 +3122,7 @@ CONFIG_IBM_ASM=m CONFIG_ICE=m # CONFIG_ICPLUS_PHY is not set CONFIG_ICS932S401=m +CONFIG_ICST=y # CONFIG_IDE is not set # CONFIG_IDEAPAD_LAPTOP is not set CONFIG_IDLE_PAGE_TRACKING=y @@ -2228,6 +3179,24 @@ CONFIG_IMA_QUEUE_EARLY_BOOT_KEYS=y CONFIG_IMA_TRUSTED_KEYRING=y # CONFIG_IMA_WRITE_POLICY is not set CONFIG_IMG_ASCII_LCD=m +CONFIG_IMX2_WDT=m +CONFIG_IMX7ULP_WDT=m +CONFIG_IMX8MM_THERMAL=m +CONFIG_IMX_DMA=m +CONFIG_IMX_DSP=m +CONFIG_IMX_GPCV2=y +CONFIG_IMX_GPCV2_PM_DOMAINS=y +CONFIG_IMX_INTMUX=y +CONFIG_IMX_IRQSTEER=y +CONFIG_IMX_MBOX=m +CONFIG_IMX_SCU=y +CONFIG_IMX_SCU_PD=y +CONFIG_IMX_SC_THERMAL=m +CONFIG_IMX_SC_WDT=m +CONFIG_IMX_SDMA=m +CONFIG_IMX_THERMAL=m +CONFIG_IMX_WEIM=y +CONFIG_INDIRECT_PIO=y CONFIG_INET=y CONFIG_INET6_AH=m CONFIG_INET6_ESP=m @@ -2257,6 +3226,9 @@ CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS=y # CONFIG_INFINIBAND_BNXT_RE is not set # CONFIG_INFINIBAND_CXGB4 is not set CONFIG_INFINIBAND_EFA=m +CONFIG_INFINIBAND_HNS=m +CONFIG_INFINIBAND_HNS_HIP06=y +CONFIG_INFINIBAND_HNS_HIP08=y # CONFIG_INFINIBAND_I40IW is not set CONFIG_INFINIBAND_IPOIB=m # CONFIG_INFINIBAND_IPOIB_CM is not set @@ -2285,11 +3257,31 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y # CONFIG_INIT_ON_FREE_DEFAULT_ON is not set CONFIG_INIT_STACK_NONE=y +CONFIG_INLINE_READ_LOCK=y +CONFIG_INLINE_READ_LOCK_BH=y +CONFIG_INLINE_READ_LOCK_IRQ=y +CONFIG_INLINE_READ_LOCK_IRQSAVE=y CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_BH=y CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_SPIN_LOCK=y +CONFIG_INLINE_SPIN_LOCK_BH=y +CONFIG_INLINE_SPIN_LOCK_IRQ=y +CONFIG_INLINE_SPIN_LOCK_IRQSAVE=y +CONFIG_INLINE_SPIN_TRYLOCK=y +CONFIG_INLINE_SPIN_TRYLOCK_BH=y +CONFIG_INLINE_SPIN_UNLOCK_BH=y CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE=y +CONFIG_INLINE_WRITE_LOCK=y +CONFIG_INLINE_WRITE_LOCK_BH=y +CONFIG_INLINE_WRITE_LOCK_IRQ=y +CONFIG_INLINE_WRITE_LOCK_IRQSAVE=y CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_BH=y CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE=y CONFIG_INOTIFY_USER=y CONFIG_INPUT=y # CONFIG_INPUT_AD714X is not set @@ -2297,10 +3289,12 @@ CONFIG_INPUT=y # CONFIG_INPUT_APANEL is not set # CONFIG_INPUT_ATI_REMOTE2 is not set # CONFIG_INPUT_ATLAS_BTNS is not set +CONFIG_INPUT_ATMEL_CAPTOUCH=m # CONFIG_INPUT_AXP20X_PEK is not set # CONFIG_INPUT_BMA150 is not set # CONFIG_INPUT_CM109 is not set # CONFIG_INPUT_CMA3000 is not set +CONFIG_INPUT_CPCAP_PWRBUTTON=m # CONFIG_INPUT_DA7280_HAPTICS is not set # CONFIG_INPUT_DA9052_ONKEY is not set # CONFIG_INPUT_DA9063_ONKEY is not set @@ -2315,6 +3309,7 @@ CONFIG_INPUT_FF_MEMLESS=m # CONFIG_INPUT_GPIO_DECODER is not set # CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set CONFIG_INPUT_GPIO_VIBRA=m +CONFIG_INPUT_HISI_POWERKEY=m # CONFIG_INPUT_IDEAPAD_SLIDEBAR is not set # CONFIG_INPUT_IMS_PCU is not set CONFIG_INPUT_IQS269A=m @@ -2325,6 +3320,8 @@ CONFIG_INPUT_KEYBOARD=y # CONFIG_INPUT_KXTJ9 is not set # CONFIG_INPUT_LEDS is not set CONFIG_INPUT_MATRIXKMAP=m +CONFIG_INPUT_MAX77650_ONKEY=m +CONFIG_INPUT_MAX77693_HAPTIC=m # CONFIG_INPUT_MC13783_PWRBUTTON is not set CONFIG_INPUT_MISC=y # CONFIG_INPUT_MMA8450 is not set @@ -2338,11 +3335,16 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 # CONFIG_INPUT_PCF8574 is not set # CONFIG_INPUT_PCSPKR is not set # CONFIG_INPUT_POWERMATE is not set +CONFIG_INPUT_PWM_BEEPER=m +CONFIG_INPUT_PWM_VIBRA=m # CONFIG_INPUT_REGULATOR_HAPTIC is not set # CONFIG_INPUT_RETU_PWRBUTTON is not set +CONFIG_INPUT_RK805_PWRKEY=m +CONFIG_INPUT_SC27XX_VIBRA=m CONFIG_INPUT_SPARSEKMAP=m CONFIG_INPUT_TABLET=y # CONFIG_INPUT_TOUCHSCREEN is not set +CONFIG_INPUT_TPS65218_PWRBUTTON=m CONFIG_INPUT_UINPUT=y # CONFIG_INPUT_WM831X_ON is not set # CONFIG_INPUT_YEALINK is not set @@ -2401,6 +3403,8 @@ CONFIG_INTEL_SOC_PMIC_BXTWC=m CONFIG_INTEL_SOC_PMIC_CHTDC_TI=m CONFIG_INTEL_SOC_PMIC_MRFLD=m CONFIG_INTEL_SPEED_SELECT_INTERFACE=m +CONFIG_INTEL_STRATIX10_RSU=m +CONFIG_INTEL_STRATIX10_SERVICE=m CONFIG_INTEL_TELEMETRY=m # CONFIG_INTEL_TH is not set CONFIG_INTEL_TURBO_MAX_3=y @@ -2411,6 +3415,23 @@ CONFIG_INTEL_WMI_SBL_FW_UPDATE=m CONFIG_INTEL_WMI_THUNDERBOLT=m # CONFIG_INTEL_XWAY_PHY is not set CONFIG_INTERCONNECT=y +CONFIG_INTERCONNECT_IMX=m +CONFIG_INTERCONNECT_IMX8MM=m +CONFIG_INTERCONNECT_IMX8MN=m +CONFIG_INTERCONNECT_IMX8MQ=m +CONFIG_INTERCONNECT_QCOM=y +CONFIG_INTERCONNECT_QCOM_BCM_VOTER=m +CONFIG_INTERCONNECT_QCOM_MSM8916=m +CONFIG_INTERCONNECT_QCOM_MSM8974=m +CONFIG_INTERCONNECT_QCOM_OSM_L3=m +CONFIG_INTERCONNECT_QCOM_QCS404=m +CONFIG_INTERCONNECT_QCOM_RPMH=m +CONFIG_INTERCONNECT_QCOM_RPMH_POSSIBLE=y +CONFIG_INTERCONNECT_QCOM_SC7180=m +CONFIG_INTERCONNECT_QCOM_SDM845=m +CONFIG_INTERCONNECT_QCOM_SM8150=m +CONFIG_INTERCONNECT_QCOM_SM8250=m +CONFIG_INTERCONNECT_QCOM_SMD_RPM=m CONFIG_INTERVAL_TREE=y CONFIG_IOASID=y CONFIG_IOMMU_API=y @@ -2420,7 +3441,12 @@ CONFIG_IOMMU_API=y CONFIG_IOMMU_DMA=y CONFIG_IOMMU_HELPER=y CONFIG_IOMMU_IOVA=y +CONFIG_IOMMU_IO_PGTABLE=y +# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set +CONFIG_IOMMU_IO_PGTABLE_LPAE=y +# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set CONFIG_IOMMU_SUPPORT=y +CONFIG_IOMMU_SVA_LIB=y CONFIG_IONIC=m CONFIG_IOSCHED_BFQ=m CONFIG_IOSF_MBI=y @@ -2456,6 +3482,7 @@ CONFIG_IP6_NF_TARGET_SYNPROXY=m CONFIG_IPACK_BUS=m CONFIG_IPC_NS=y # CONFIG_IPDDP is not set +CONFIG_IPMB_DEVICE_INTERFACE=m CONFIG_IPMI_DEVICE_INTERFACE=m CONFIG_IPMI_DMI_DECODE=y CONFIG_IPMI_HANDLER=m @@ -2465,6 +3492,14 @@ CONFIG_IPMI_POWEROFF=m CONFIG_IPMI_SI=m CONFIG_IPMI_SSIF=m CONFIG_IPMI_WATCHDOG=m +# CONFIG_IPMMU_VMSA is not set +CONFIG_IPQ_APSS_6018=m +CONFIG_IPQ_APSS_PLL=m +CONFIG_IPQ_GCC_4019=m +CONFIG_IPQ_GCC_6018=m +CONFIG_IPQ_GCC_806X=m +CONFIG_IPQ_GCC_8074=m +CONFIG_IPQ_LCC_806X=m CONFIG_IPV6=y CONFIG_IPV6_FOU=m CONFIG_IPV6_FOU_TUNNEL=m @@ -2576,10 +3611,12 @@ CONFIG_IP_VS_SH_TAB_BITS=8 CONFIG_IP_VS_TAB_BITS=12 CONFIG_IP_VS_WLC=m CONFIG_IP_VS_WRR=m +CONFIG_IRQCHIP=y # CONFIG_IRQSOFF_TRACER is not set CONFIG_IRQ_BYPASS_MANAGER=y CONFIG_IRQ_DOMAIN=y CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_IRQ_FASTEOI_HIERARCHY_HANDLERS=y CONFIG_IRQ_FORCED_THREADING=y # CONFIG_IRQ_FORCED_THREADING_DEFAULT is not set CONFIG_IRQ_MSI_IOMMU=y @@ -2590,6 +3627,9 @@ CONFIG_IRQ_SIM=y CONFIG_IRQ_WORK=y CONFIG_IR_ENE=m CONFIG_IR_FINTEK=m +CONFIG_IR_GPIO_CIR=m +CONFIG_IR_GPIO_TX=m +CONFIG_IR_HIX5HD2=m # CONFIG_IR_IGORPLUGUSB is not set # CONFIG_IR_IGUANA is not set # CONFIG_IR_IMON is not set @@ -2599,8 +3639,11 @@ CONFIG_IR_ITE_CIR=m CONFIG_IR_JVC_DECODER=m # CONFIG_IR_MCEUSB is not set CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_MESON=m +CONFIG_IR_MTK=m CONFIG_IR_NEC_DECODER=m CONFIG_IR_NUVOTON=m +CONFIG_IR_PWM_TX=m CONFIG_IR_RC5_DECODER=m CONFIG_IR_RC6_DECODER=m CONFIG_IR_RCMM_DECODER=m @@ -2611,7 +3654,9 @@ CONFIG_IR_SERIAL_TRANSMITTER=y CONFIG_IR_SHARP_DECODER=m CONFIG_IR_SIR=m CONFIG_IR_SONY_DECODER=m +CONFIG_IR_SPI=m # CONFIG_IR_STREAMZAP is not set +CONFIG_IR_SUNXI=m # CONFIG_IR_TOY is not set # CONFIG_IR_TTUSBIR is not set CONFIG_IR_WINBOND_CIR=m @@ -2653,6 +3698,9 @@ CONFIG_JFS_STATISTICS=y CONFIG_JME=m CONFIG_JOLIET=y CONFIG_JUMP_LABEL=y +CONFIG_K3_DMA=m +CONFIG_K3_RTI_WATCHDOG=m +CONFIG_K3_THERMAL=m CONFIG_KALLSYMS=y CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y CONFIG_KALLSYMS_ALL=y @@ -2669,6 +3717,7 @@ CONFIG_KERNEL_GZIP=y # CONFIG_KERNEL_LZ4 is not set # CONFIG_KERNEL_LZMA is not set # CONFIG_KERNEL_LZO is not set +CONFIG_KERNEL_MODE_NEON=y # CONFIG_KERNEL_XZ is not set # CONFIG_KERNEL_ZSTD is not set CONFIG_KERNFS=y @@ -2676,6 +3725,7 @@ CONFIG_KEXEC=y CONFIG_KEXEC_BZIMAGE_VERIFY_SIG=y CONFIG_KEXEC_CORE=y CONFIG_KEXEC_FILE=y +# CONFIG_KEXEC_IMAGE_VERIFY_SIG is not set CONFIG_KEXEC_JUMP=y CONFIG_KEXEC_SIG=y # CONFIG_KEXEC_SIG_FORCE is not set @@ -2683,9 +3733,13 @@ CONFIG_KEXEC_SIG=y # CONFIG_KEYBOARD_ADP5589 is not set CONFIG_KEYBOARD_APPLESPI=m CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_BCM=m +CONFIG_KEYBOARD_CAP11XX=m CONFIG_KEYBOARD_DLINK_DIR685=m # CONFIG_KEYBOARD_GPIO is not set CONFIG_KEYBOARD_GPIO_POLLED=m +CONFIG_KEYBOARD_IMX=m +CONFIG_KEYBOARD_IMX_SC_KEY=m CONFIG_KEYBOARD_IQS62X=m # CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_LM8323 is not set @@ -2695,15 +3749,21 @@ CONFIG_KEYBOARD_IQS62X=m # CONFIG_KEYBOARD_MCS is not set # CONFIG_KEYBOARD_MPR121 is not set # CONFIG_KEYBOARD_NEWTON is not set +CONFIG_KEYBOARD_NVEC=m +CONFIG_KEYBOARD_OMAP4=m # CONFIG_KEYBOARD_OPENCORES is not set CONFIG_KEYBOARD_QT1050=m # CONFIG_KEYBOARD_QT1070 is not set # CONFIG_KEYBOARD_QT2160 is not set # CONFIG_KEYBOARD_SAMSUNG is not set +CONFIG_KEYBOARD_SNVS_PWRKEY=m +CONFIG_KEYBOARD_STMPE=m # CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUN4I_LRADC is not set # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_TCA6416 is not set # CONFIG_KEYBOARD_TCA8418 is not set +CONFIG_KEYBOARD_TEGRA=m # CONFIG_KEYBOARD_TM2_TOUCHKEY is not set # CONFIG_KEYBOARD_XTKBD is not set CONFIG_KEYS=y @@ -2716,6 +3776,7 @@ CONFIG_KGDB_KDB=y CONFIG_KGDB_LOW_LEVEL_TRAP=y CONFIG_KGDB_SERIAL_CONSOLE=y # CONFIG_KGDB_TESTS is not set +CONFIG_KHADAS_MCU_FAN_THERMAL=m CONFIG_KPC2000=y CONFIG_KPC2000_CORE=m CONFIG_KPC2000_DMA=m @@ -2726,13 +3787,14 @@ CONFIG_KPROBES_ON_FTRACE=y CONFIG_KPROBE_EVENTS=y # CONFIG_KPROBE_EVENTS_ON_NOTRACE is not set # CONFIG_KPROBE_EVENT_GEN_TEST is not set +CONFIG_KPSS_XCC=m CONFIG_KRETPROBES=y CONFIG_KS0108=m CONFIG_KS0108_DELAY=2 CONFIG_KS0108_PORT=0x378 CONFIG_KSM=y # CONFIG_KUNIT is not set -CONFIG_KVM=m +CONFIG_KUSER_HELPERS=y CONFIG_KVM_AMD=m CONFIG_KVM_AMD_SEV=y CONFIG_KVM_ASYNC_PF=y @@ -2757,13 +3819,28 @@ CONFIG_LAPBETHER=m # CONFIG_LATENCYTOP is not set CONFIG_LATTICE_ECP3_CONFIG=m # CONFIG_LCD2S is not set -# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_LCD_AMS369FG06=m +CONFIG_LCD_HX8357=m +CONFIG_LCD_ILI922X=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_L4F00242T03=m +CONFIG_LCD_LMS283GF05=m +CONFIG_LCD_LMS501KF03=m +CONFIG_LCD_LTV350QV=m +CONFIG_LCD_OTM3225A=m +CONFIG_LCD_PLATFORM=m +CONFIG_LCD_TDO24M=m +CONFIG_LCD_VGG2432A4=m CONFIG_LDISC_AUTOLOAD=y # CONFIG_LDM_DEBUG is not set CONFIG_LDM_PARTITION=y CONFIG_LD_ORPHAN_WARN=y CONFIG_LD_VERSION=236010000 +CONFIG_LEDS_AN30259A=m CONFIG_LEDS_APU=m +CONFIG_LEDS_AW2013=m +CONFIG_LEDS_BCM6328=m +CONFIG_LEDS_BCM6358=m # CONFIG_LEDS_BD2802 is not set # CONFIG_LEDS_BLINKM is not set CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y @@ -2771,18 +3848,33 @@ CONFIG_LEDS_CLASS=m # CONFIG_LEDS_CLASS_FLASH is not set # CONFIG_LEDS_CLASS_MULTICOLOR is not set # CONFIG_LEDS_CLEVO_MAIL is not set +CONFIG_LEDS_CPCAP=m +CONFIG_LEDS_CR0014114=m # CONFIG_LEDS_DA9052 is not set # CONFIG_LEDS_DAC124S085 is not set +CONFIG_LEDS_EL15203000=m CONFIG_LEDS_GPIO=m # CONFIG_LEDS_INTEL_SS4200 is not set +CONFIG_LEDS_IS31FL319X=m +CONFIG_LEDS_IS31FL32XX=m # CONFIG_LEDS_LM3530 is not set CONFIG_LEDS_LM3532=m # CONFIG_LEDS_LM355x is not set CONFIG_LEDS_LM36274=m # CONFIG_LEDS_LM3642 is not set +CONFIG_LEDS_LM3692X=m +CONFIG_LEDS_LM3697=m # CONFIG_LEDS_LP3944 is not set # CONFIG_LEDS_LP3952 is not set # CONFIG_LEDS_LP50XX is not set +CONFIG_LEDS_LP5521=m +CONFIG_LEDS_LP5523=m +CONFIG_LEDS_LP5562=m +CONFIG_LEDS_LP55XX_COMMON=m +CONFIG_LEDS_LP8501=m +CONFIG_LEDS_LP8860=m +CONFIG_LEDS_LT3593=m +CONFIG_LEDS_MAX77650=m # CONFIG_LEDS_MC13783 is not set # CONFIG_LEDS_MENF21BMC is not set # CONFIG_LEDS_MLXCPLD is not set @@ -2791,7 +3883,10 @@ CONFIG_LEDS_MLXREG=m # CONFIG_LEDS_PCA9532 is not set # CONFIG_LEDS_PCA955X is not set # CONFIG_LEDS_PCA963X is not set +CONFIG_LEDS_PWM=m # CONFIG_LEDS_REGULATOR is not set +CONFIG_LEDS_SC27XX_BLTC=m +CONFIG_LEDS_SPI_BYTE=m # CONFIG_LEDS_TCA6507 is not set CONFIG_LEDS_TI_LMU_COMMON=m # CONFIG_LEDS_TLC591XX is not set @@ -2823,9 +3918,12 @@ CONFIG_LEGACY_VSYSCALL_EMULATE=y CONFIG_LG_LAPTOP=m CONFIG_LIBCRC32C=m # CONFIG_LIBFC is not set +CONFIG_LIBFDT=y CONFIG_LIBNVDIMM=y CONFIG_LINEAR_RANGES=y CONFIG_LIRC=y +CONFIG_LITEX=y +CONFIG_LITEX_SOC_CONTROLLER=m CONFIG_LIVEPATCH=y CONFIG_LLC=m CONFIG_LLC2=m @@ -2857,6 +3955,8 @@ CONFIG_LRU_CACHE=m # CONFIG_LSI_ET1011C_PHY is not set CONFIG_LSM="lockdown,yama,integrity,apparmor" CONFIG_LSM_MMAP_MIN_ADDR=0 +CONFIG_LS_EXTIRQ=y +CONFIG_LS_SCFG_MSI=y # CONFIG_LTE_GDM724X is not set CONFIG_LTPC=m CONFIG_LWTUNNEL=y @@ -2892,10 +3992,10 @@ CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6 CONFIG_MAGIC_SYSRQ_SERIAL=y CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" CONFIG_MAILBOX=y +CONFIG_MAILBOX_TEST=m CONFIG_MANAGER_SBS=m CONFIG_MANDATORY_FILE_LOCKING=y CONFIG_MARVELL_10G_PHY=m -# CONFIG_MARVELL_PHY is not set # CONFIG_MATOM is not set CONFIG_MAX63XX_WATCHDOG=m CONFIG_MAXSMP=y @@ -2906,15 +4006,31 @@ CONFIG_MCB_PCI=m # CONFIG_MCORE2 is not set CONFIG_MD=y CONFIG_MDIO=m +# CONFIG_MDIO_BCM_IPROC is not set CONFIG_MDIO_BCM_UNIMAC=m # CONFIG_MDIO_BITBANG is not set CONFIG_MDIO_BUS=y +CONFIG_MDIO_BUS_MUX=y +CONFIG_MDIO_BUS_MUX_BCM_IPROC=y +CONFIG_MDIO_BUS_MUX_GPIO=m +CONFIG_MDIO_BUS_MUX_MESON_G12A=m +CONFIG_MDIO_BUS_MUX_MMIOREG=m +CONFIG_MDIO_BUS_MUX_MULTIPLEXER=m +CONFIG_MDIO_CAVIUM=m CONFIG_MDIO_DEVICE=y CONFIG_MDIO_DEVRES=y +CONFIG_MDIO_HISI_FEMAC=m CONFIG_MDIO_I2C=m +CONFIG_MDIO_IPQ4019=m +CONFIG_MDIO_IPQ8064=m CONFIG_MDIO_MSCC_MIIM=m CONFIG_MDIO_MVUSB=m +CONFIG_MDIO_OCTEON=m +# CONFIG_MDIO_SUN4I is not set # CONFIG_MDIO_THUNDER is not set +CONFIG_MDIO_XGENE=m +CONFIG_MDM_GCC_9615=m +CONFIG_MDM_LCC_9615=m CONFIG_MD_AUTODETECT=y CONFIG_MD_CLUSTER=m CONFIG_MD_FAULTY=m @@ -2924,6 +4040,7 @@ CONFIG_MD_RAID0=m CONFIG_MD_RAID1=m CONFIG_MD_RAID10=m CONFIG_MD_RAID456=m +CONFIG_MEDIATEK_WATCHDOG=m # CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set # CONFIG_MEDIA_CAMERA_SUPPORT is not set CONFIG_MEDIA_CEC_RC=y @@ -2967,17 +4084,37 @@ CONFIG_MEM_SOFT_DIRTY=y CONFIG_MENF21BMC_WATCHDOG=m CONFIG_MENZ069_WATCHDOG=m CONFIG_MEN_A21_WDT=m +CONFIG_MESON_CANVAS=m +CONFIG_MESON_CLK_MEASURE=y +CONFIG_MESON_EE_PM_DOMAINS=y +CONFIG_MESON_EFUSE=m +CONFIG_MESON_GXBB_WATCHDOG=m +CONFIG_MESON_GXL_PHY=m +CONFIG_MESON_GX_PM_DOMAINS=y +CONFIG_MESON_GX_SOCINFO=y +CONFIG_MESON_IRQ_GPIO=y +CONFIG_MESON_MX_EFUSE=m +CONFIG_MESON_SECURE_PM_DOMAINS=y +CONFIG_MESON_SM=y +CONFIG_MESON_WATCHDOG=m CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 # CONFIG_MFD_88PM800 is not set CONFIG_MFD_88PM805=m +# CONFIG_MFD_AC100 is not set +CONFIG_MFD_ACT8945A=m +CONFIG_MFD_ALTERA_SYSMGR=y CONFIG_MFD_ARIZONA=y CONFIG_MFD_ARIZONA_I2C=m CONFIG_MFD_ARIZONA_SPI=m +CONFIG_MFD_ATMEL_FLEXCOM=m +CONFIG_MFD_ATMEL_HLCDC=m CONFIG_MFD_AXP20X=m CONFIG_MFD_AXP20X_I2C=m +CONFIG_MFD_AXP20X_RSB=m CONFIG_MFD_BCM590XX=m CONFIG_MFD_BD9571MWV=m CONFIG_MFD_CORE=y +CONFIG_MFD_CPCAP=m CONFIG_MFD_CS47L15=y CONFIG_MFD_CS47L24=y CONFIG_MFD_CS47L35=y @@ -2989,6 +4126,9 @@ CONFIG_MFD_DA9052_SPI=y CONFIG_MFD_DA9063=m # CONFIG_MFD_DA9150 is not set # CONFIG_MFD_DLN2 is not set +CONFIG_MFD_GATEWORKS_GSC=m +CONFIG_MFD_HI6421_PMIC=m +CONFIG_MFD_HI655X_PMIC=m CONFIG_MFD_INTEL_LPSS=m CONFIG_MFD_INTEL_LPSS_ACPI=m CONFIG_MFD_INTEL_LPSS_PCI=m @@ -3000,12 +4140,15 @@ CONFIG_MFD_INTEL_QUARK_I2C_GPIO=m CONFIG_MFD_IQS62X=m CONFIG_MFD_JANZ_CMODIO=m # CONFIG_MFD_KEMPLD is not set +CONFIG_MFD_KHADAS_MCU=m # CONFIG_MFD_LM3533 is not set CONFIG_MFD_LP3943=m CONFIG_MFD_MADERA=m CONFIG_MFD_MADERA_I2C=m CONFIG_MFD_MADERA_SPI=m CONFIG_MFD_MAX14577=m +CONFIG_MFD_MAX77650=m +# CONFIG_MFD_MAX77686 is not set CONFIG_MFD_MAX77693=m CONFIG_MFD_MAX8907=m CONFIG_MFD_MC13XXX=m @@ -3015,23 +4158,38 @@ CONFIG_MFD_MENF21BMC=m CONFIG_MFD_MP2629=m CONFIG_MFD_MT6360=m # CONFIG_MFD_MT6397 is not set +CONFIG_MFD_NVEC=m CONFIG_MFD_PCF50633=m +CONFIG_MFD_QCOM_RPM=m CONFIG_MFD_RDC321X=m CONFIG_MFD_RETU=m +CONFIG_MFD_RK808=m +CONFIG_MFD_RN5T618=m CONFIG_MFD_RT5033=m +CONFIG_MFD_SC27XX_PMIC=m # CONFIG_MFD_SI476X_CORE is not set +CONFIG_MFD_SIMPLE_MFD_I2C=m CONFIG_MFD_SKY81452=m +CONFIG_MFD_SL28CPLD=m CONFIG_MFD_SM501=m CONFIG_MFD_SM501_GPIO=y +CONFIG_MFD_STMFX=m +CONFIG_MFD_STMPE=y +CONFIG_MFD_SUN4I_GPADC=m +CONFIG_MFD_SUN6I_PRCM=y CONFIG_MFD_SYSCON=y CONFIG_MFD_TI_AM335X_TSCADC=m CONFIG_MFD_TI_LMU=m CONFIG_MFD_TI_LP873X=m +CONFIG_MFD_TI_LP87565=m CONFIG_MFD_TPS65086=m +CONFIG_MFD_TPS65217=m +CONFIG_MFD_TPS65218=m CONFIG_MFD_TPS65912=y CONFIG_MFD_TPS65912_I2C=m CONFIG_MFD_TPS65912_SPI=y CONFIG_MFD_TQMX86=m +CONFIG_MFD_VEXPRESS_SYSREG=y # CONFIG_MFD_VIPERBOARD is not set CONFIG_MFD_VX855=m CONFIG_MFD_WCD934X=m @@ -3050,7 +4208,9 @@ CONFIG_MHI_BUS=m # CONFIG_MICREL_KS8995MA is not set # CONFIG_MICREL_PHY is not set # CONFIG_MICROCHIP_PHY is not set +CONFIG_MICROCHIP_PIT64B=y CONFIG_MICROCHIP_T1_PHY=m +CONFIG_MICROCHIP_TCB_CAPTURE=m CONFIG_MICROCODE=y CONFIG_MICROCODE_AMD=y CONFIG_MICROCODE_INTEL=y @@ -3096,6 +4256,9 @@ CONFIG_MLX5_SW_STEERING=y CONFIG_MLX5_TC_CT=y CONFIG_MLX5_TLS=y # CONFIG_MLX5_VDPA_NET is not set +CONFIG_MLXBF_BOOTCTL=m +CONFIG_MLXBF_PMC=m +CONFIG_MLXBF_TMFIFO=m CONFIG_MLXFW=m CONFIG_MLXREG_HOTPLUG=m CONFIG_MLXREG_IO=m @@ -3144,12 +4307,14 @@ CONFIG_MODVERSIONS=y CONFIG_MOST=m CONFIG_MOST_CDEV=m CONFIG_MOST_COMPONENTS=m +CONFIG_MOST_DIM2=m CONFIG_MOST_I2C=m CONFIG_MOST_NET=m # CONFIG_MOST_USB_HDM is not set CONFIG_MOST_VIDEO=m CONFIG_MOXA_INTELLIO=m CONFIG_MOXA_SMARTIO=m +CONFIG_MOXTET=m CONFIG_MPILIB=y CONFIG_MPLS=y CONFIG_MPLS_IPTUNNEL=m @@ -3160,11 +4325,44 @@ CONFIG_MPTCP_IPV6=y CONFIG_MQ_IOSCHED_DEADLINE=y CONFIG_MQ_IOSCHED_KYBER=m CONFIG_MRP=m +CONFIG_MSCC_OCELOT_SWITCH=m +CONFIG_MSCC_OCELOT_SWITCH_LIB=m CONFIG_MSDOS_FS=m CONFIG_MSDOS_PARTITION=y # CONFIG_MSI_LAPTOP is not set # CONFIG_MSI_WMI is not set +CONFIG_MSM_GCC_8660=m +CONFIG_MSM_GCC_8916=m +CONFIG_MSM_GCC_8939=m +CONFIG_MSM_GCC_8960=m +CONFIG_MSM_GCC_8974=m +CONFIG_MSM_GCC_8994=m +CONFIG_MSM_GCC_8996=m +CONFIG_MSM_GCC_8998=m +CONFIG_MSM_GPUCC_8998=m +CONFIG_MSM_LCC_8960=m +CONFIG_MSM_MMCC_8960=m +CONFIG_MSM_MMCC_8974=m +CONFIG_MSM_MMCC_8996=m +CONFIG_MSM_MMCC_8998=m +CONFIG_MST_IRQ=y # CONFIG_MTD is not set +CONFIG_MTK_CMDQ=m +CONFIG_MTK_CMDQ_MBOX=m +CONFIG_MTK_CQDMA=m +CONFIG_MTK_DEVAPC=m +# CONFIG_MTK_EFUSE is not set +CONFIG_MTK_HSDMA=m +CONFIG_MTK_INFRACFG=y +# CONFIG_MTK_IOMMU is not set +CONFIG_MTK_MMSYS=y +CONFIG_MTK_PMIC_WRAP=m +CONFIG_MTK_SCPSYS=y +CONFIG_MTK_SCPSYS_PM_DOMAINS=y +CONFIG_MTK_SMI=y +CONFIG_MTK_THERMAL=m +CONFIG_MTK_TIMER=y +CONFIG_MTK_UART_APDMA=m CONFIG_MTRR=y CONFIG_MTRR_SANITIZER=y CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 @@ -3175,12 +4373,28 @@ CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_MUX_ADG792A=m CONFIG_MUX_ADGS1408=m CONFIG_MUX_GPIO=m +CONFIG_MUX_MMIO=m +CONFIG_MVEBU_GICP=y +CONFIG_MVEBU_ICU=y +CONFIG_MVEBU_ODMI=y +CONFIG_MVEBU_PIC=y +CONFIG_MVEBU_SEI=y CONFIG_MVMDIO=m +CONFIG_MVNETA=m +CONFIG_MVPP2=m +CONFIG_MV_XOR=y +CONFIG_MV_XOR_V2=y # CONFIG_MWAVE is not set +CONFIG_MX3_IPU=y +CONFIG_MX3_IPU_IRQS=4 +CONFIG_MXC_CLK=y +CONFIG_MXC_CLK_SCU=y CONFIG_MXM_WMI=m +CONFIG_MXS_DMA=y CONFIG_NAMESPACES=y # CONFIG_NATIONAL_PHY is not set CONFIG_NCSI_OEM_CMD_GET_MAC=y +CONFIG_NDC_DIS_DYNAMIC_CACHING=y CONFIG_ND_BLK=y CONFIG_ND_BTT=y CONFIG_ND_CLAIM=y @@ -3346,6 +4560,7 @@ CONFIG_NET_DSA_MICROCHIP_KSZ9477=m CONFIG_NET_DSA_MICROCHIP_KSZ9477_I2C=m CONFIG_NET_DSA_MICROCHIP_KSZ9477_SPI=m CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON=m +CONFIG_NET_DSA_MSCC_FELIX=m # CONFIG_NET_DSA_MSCC_SEVILLE is not set CONFIG_NET_DSA_MT7530=m # CONFIG_NET_DSA_MV88E6060 is not set @@ -3461,6 +4676,7 @@ CONFIG_NET_UDP_TUNNEL=y # CONFIG_NET_VENDOR_ADAPTEC is not set CONFIG_NET_VENDOR_AGERE=y CONFIG_NET_VENDOR_ALACRITECH=y +CONFIG_NET_VENDOR_ALLWINNER=y # CONFIG_NET_VENDOR_ALTEON is not set # CONFIG_NET_VENDOR_AMAZON is not set # CONFIG_NET_VENDOR_AMD is not set @@ -3480,11 +4696,14 @@ CONFIG_NET_VENDOR_CORTINA=y CONFIG_NET_VENDOR_DLINK=y CONFIG_NET_VENDOR_EMULEX=y # CONFIG_NET_VENDOR_EZCHIP is not set +CONFIG_NET_VENDOR_FREESCALE=y CONFIG_NET_VENDOR_GOOGLE=y +CONFIG_NET_VENDOR_HISILICON=y CONFIG_NET_VENDOR_HUAWEI=y CONFIG_NET_VENDOR_I825XX=y CONFIG_NET_VENDOR_INTEL=y CONFIG_NET_VENDOR_MARVELL=y +# CONFIG_NET_VENDOR_MEDIATEK is not set CONFIG_NET_VENDOR_MELLANOX=y # CONFIG_NET_VENDOR_MICREL is not set CONFIG_NET_VENDOR_MICROCHIP=y @@ -3521,6 +4740,8 @@ CONFIG_NET_VENDOR_SYNOPSYS=y # CONFIG_NET_VENDOR_WIZNET is not set CONFIG_NET_VENDOR_XILINX=y CONFIG_NET_VRF=m +CONFIG_NET_XGENE=m +CONFIG_NET_XGENE_V2=m CONFIG_NEW_LEDS=y CONFIG_NFC=m CONFIG_NFC_DIGITAL=m @@ -3757,7 +4978,6 @@ CONFIG_NO_HZ=y CONFIG_NO_HZ_COMMON=y CONFIG_NO_HZ_FULL=y # CONFIG_NO_HZ_IDLE is not set -CONFIG_NR_CPUS=8192 CONFIG_NR_CPUS_DEFAULT=8192 CONFIG_NR_CPUS_RANGE_BEGIN=8192 CONFIG_NR_CPUS_RANGE_END=8192 @@ -3785,9 +5005,20 @@ CONFIG_NUMA_KEEP_MEMINFO=y CONFIG_NVDIMM_DAX=y CONFIG_NVDIMM_KEYS=y CONFIG_NVDIMM_PFN=y +CONFIG_NVEC_PAZ00=m +CONFIG_NVEC_POWER=m +CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y # CONFIG_NVM is not set CONFIG_NVMEM=y +CONFIG_NVMEM_BCM_OCOTP=m +CONFIG_NVMEM_IMX_IIM=m +CONFIG_NVMEM_IMX_OCOTP=m +CONFIG_NVMEM_IMX_OCOTP_SCU=m +CONFIG_NVMEM_REBOOT_MODE=m +CONFIG_NVMEM_SNVS_LPGPR=m +CONFIG_NVMEM_SUNXI_SID=m CONFIG_NVMEM_SYSFS=y +CONFIG_NVMEM_ZYNQMP=y CONFIG_NVME_CORE=y CONFIG_NVME_FABRICS=m CONFIG_NVME_FC=m @@ -3814,9 +5045,32 @@ CONFIG_OCFS2_FS=m CONFIG_OCFS2_FS_O2CB=m CONFIG_OCFS2_FS_STATS=y CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m -# CONFIG_OF is not set +CONFIG_OCTEONTX2_AF=m +CONFIG_OCTEONTX2_MBOX=m +CONFIG_OCTEONTX2_PF=m +CONFIG_OCTEONTX2_VF=m +CONFIG_OF_ADDRESS=y +CONFIG_OF_DYNAMIC=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_FLATTREE=y +CONFIG_OF_GPIO=y +CONFIG_OF_IOMMU=y +CONFIG_OF_IRQ=y +CONFIG_OF_KOBJ=y +CONFIG_OF_MDIO=y +CONFIG_OF_NET=y +CONFIG_OF_NUMA=y +CONFIG_OF_OVERLAY=y +CONFIG_OF_PMEM=m +# CONFIG_OF_RECONFIG_NOTIFIER_ERROR_INJECT is not set +CONFIG_OF_RESERVED_MEM=y +CONFIG_OF_RESOLVE=y +# CONFIG_OF_UNITTEST is not set CONFIG_OID_REGISTRY=y CONFIG_OLD_SIGSUSPEND3=y +CONFIG_OMAP2PLUS_MBOX=m +CONFIG_OMAP_MBOX_KFIFO_SIZE=256 +CONFIG_OMAP_USB2=m CONFIG_OMFS_FS=m CONFIG_OPENVSWITCH=m CONFIG_OPENVSWITCH_GENEVE=m @@ -3825,6 +5079,8 @@ CONFIG_OPENVSWITCH_VXLAN=m CONFIG_OPROFILE=m # CONFIG_OPROFILE_EVENT_MULTIPLEX is not set CONFIG_OPROFILE_NMI_TIMER=y +CONFIG_OPTEE=m +CONFIG_OPTEE_SHM_NUM_PRIV_PAGES=1 CONFIG_OPTPROBES=y # CONFIG_ORANGEFS_FS is not set CONFIG_OSF_PARTITION=y @@ -3835,6 +5091,10 @@ CONFIG_OVERLAY_FS=m CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y CONFIG_OVERLAY_FS_REDIRECT_DIR=y CONFIG_OVERLAY_FS_XINO_AUTO=y +CONFIG_OWL_DMA=m +CONFIG_OWL_PM_DOMAINS=y +CONFIG_OWL_PM_DOMAINS_HELPER=y +CONFIG_OWL_TIMER=y CONFIG_PACKET=y CONFIG_PACKET_DIAG=m CONFIG_PACKING=y @@ -3872,6 +5132,7 @@ CONFIG_PARPORT_PC_FIFO=y # CONFIG_PARPORT_PC_SUPERIO is not set CONFIG_PARPORT_SERIAL=m CONFIG_PARTITION_ADVANCED=y +CONFIG_PARTITION_PERCPU=y CONFIG_PATA_ACPI=m CONFIG_PATA_ALI=m CONFIG_PATA_AMD=m @@ -3887,6 +5148,7 @@ CONFIG_PATA_HPT37X=m CONFIG_PATA_HPT3X2N=m CONFIG_PATA_HPT3X3=m # CONFIG_PATA_HPT3X3_DMA is not set +CONFIG_PATA_IMX=m CONFIG_PATA_IT8213=m CONFIG_PATA_IT821X=m CONFIG_PATA_JMICRON=m @@ -3897,6 +5159,7 @@ CONFIG_PATA_NETCELL=m CONFIG_PATA_NINJA32=m CONFIG_PATA_NS87410=m CONFIG_PATA_NS87415=m +CONFIG_PATA_OF_PLATFORM=m CONFIG_PATA_OLDPIIX=m CONFIG_PATA_OPTI=m CONFIG_PATA_OPTIDMA=m @@ -3933,11 +5196,22 @@ CONFIG_PCIEASPM_DEFAULT=y # CONFIG_PCIEASPM_POWERSAVE is not set # CONFIG_PCIEASPM_POWER_SUPERSAVE is not set CONFIG_PCIEPORTBUS=y +CONFIG_PCIE_AL=y +CONFIG_PCIE_ALTERA=y +CONFIG_PCIE_ALTERA_MSI=y +CONFIG_PCIE_ARMADA_8K=y +CONFIG_PCIE_BRCMSTB=m CONFIG_PCIE_BUS_DEFAULT=y # CONFIG_PCIE_BUS_PEER2PEER is not set # CONFIG_PCIE_BUS_PERFORMANCE is not set # CONFIG_PCIE_BUS_SAFE is not set # CONFIG_PCIE_BUS_TUNE_OFF is not set +CONFIG_PCIE_CADENCE=y +CONFIG_PCIE_CADENCE_EP=y +CONFIG_PCIE_CADENCE_HOST=y +CONFIG_PCIE_CADENCE_PLAT=y +CONFIG_PCIE_CADENCE_PLAT_EP=y +CONFIG_PCIE_CADENCE_PLAT_HOST=y CONFIG_PCIE_DPC=y CONFIG_PCIE_DW=y CONFIG_PCIE_DW_EP=y @@ -3947,26 +5221,68 @@ CONFIG_PCIE_DW_PLAT_EP=y CONFIG_PCIE_DW_PLAT_HOST=y # CONFIG_PCIE_ECRC is not set # CONFIG_PCIE_EDR is not set +CONFIG_PCIE_HISI_STB=y +CONFIG_PCIE_IPROC=m +CONFIG_PCIE_IPROC_MSI=y +CONFIG_PCIE_IPROC_PLATFORM=m +CONFIG_PCIE_KIRIN=y +# CONFIG_PCIE_LAYERSCAPE_GEN4 is not set +CONFIG_PCIE_MEDIATEK=y +CONFIG_PCIE_MICROSEMI=y +# CONFIG_PCIE_MOBIVEIL_PLAT is not set CONFIG_PCIE_PME=y CONFIG_PCIE_PTM=y +CONFIG_PCIE_QCOM=y +CONFIG_PCIE_RCAR=y +CONFIG_PCIE_RCAR_EP=y +CONFIG_PCIE_RCAR_HOST=y +CONFIG_PCIE_ROCKCHIP=y +CONFIG_PCIE_ROCKCHIP_EP=y +CONFIG_PCIE_ROCKCHIP_HOST=m +CONFIG_PCIE_TEGRA194=m +CONFIG_PCIE_TEGRA194_EP=m +CONFIG_PCIE_TEGRA194_HOST=m +CONFIG_PCIE_XILINX=y +CONFIG_PCIE_XILINX_CPM=y +CONFIG_PCIE_XILINX_NWL=y CONFIG_PCIPCWATCHDOG=m +CONFIG_PCI_AARDVARK=y CONFIG_PCI_ATS=y +CONFIG_PCI_BRIDGE_EMUL=y # CONFIG_PCI_CNB20LE_QUIRK is not set # CONFIG_PCI_DEBUG is not set CONFIG_PCI_DIRECT=y CONFIG_PCI_DOMAINS=y +CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCI_ECAM=y CONFIG_PCI_ENDPOINT=y CONFIG_PCI_ENDPOINT_CONFIGFS=y # CONFIG_PCI_ENDPOINT_TEST is not set # CONFIG_PCI_EPF_TEST is not set +CONFIG_PCI_FTPCI100=y +CONFIG_PCI_HISI=y +CONFIG_PCI_HOST_COMMON=y +CONFIG_PCI_HOST_GENERIC=y +CONFIG_PCI_HOST_THUNDER_ECAM=y +CONFIG_PCI_HOST_THUNDER_PEM=y CONFIG_PCI_HYPERV=y CONFIG_PCI_HYPERV_INTERFACE=y +CONFIG_PCI_IMX6=y CONFIG_PCI_IOV=y +CONFIG_PCI_J721E=y +CONFIG_PCI_J721E_EP=y +CONFIG_PCI_J721E_HOST=y +CONFIG_PCI_KEYSTONE=y +CONFIG_PCI_KEYSTONE_EP=y +CONFIG_PCI_KEYSTONE_HOST=y CONFIG_PCI_LABEL=y +CONFIG_PCI_LAYERSCAPE=y +CONFIG_PCI_LAYERSCAPE_EP=y CONFIG_PCI_LOCKLESS_CONFIG=y CONFIG_PCI_MESON=y CONFIG_PCI_MMCONFIG=y CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_ARCH_FALLBACKS=y CONFIG_PCI_MSI_IRQ_DOMAIN=y # CONFIG_PCI_P2PDMA is not set CONFIG_PCI_PASID=y @@ -3976,8 +5292,13 @@ CONFIG_PCI_QUIRKS=y CONFIG_PCI_REALLOC_ENABLE_AUTO=y CONFIG_PCI_STUB=m CONFIG_PCI_SW_SWITCHTEC=m +CONFIG_PCI_SYSCALL=y +CONFIG_PCI_TEGRA=y +CONFIG_PCI_XGENE=y +CONFIG_PCI_XGENE_MSI=y # CONFIG_PCMCIA is not set CONFIG_PCSPKR_PLATFORM=y +CONFIG_PCS_LYNX=m # CONFIG_PCS_XPCS is not set # CONFIG_PDA_POWER is not set CONFIG_PDC_ADMA=m @@ -3989,7 +5310,6 @@ CONFIG_PERF_EVENTS_INTEL_CSTATE=m CONFIG_PERF_EVENTS_INTEL_RAPL=m CONFIG_PERF_EVENTS_INTEL_UNCORE=y CONFIG_PERSISTENT_KEYRINGS=y -CONFIG_PGTABLE_LEVELS=5 CONFIG_PHANTOM=m CONFIG_PHONET=m CONFIG_PHYLIB=y @@ -3997,16 +5317,102 @@ CONFIG_PHYLINK=m CONFIG_PHYSICAL_ALIGN=0x200000 CONFIG_PHYSICAL_START=0x1000000 CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PHY_AM654_SERDES=m +CONFIG_PHY_BCM_NS_USB2=m +CONFIG_PHY_BCM_NS_USB3=m +CONFIG_PHY_BCM_SR_PCIE=m +CONFIG_PHY_BCM_SR_USB=m +CONFIG_PHY_BERLIN_SATA=m +CONFIG_PHY_BERLIN_USB=m +CONFIG_PHY_BRCM_SATA=y +CONFIG_PHY_BRCM_USB=m +CONFIG_PHY_CADENCE_DPHY=m +CONFIG_PHY_CADENCE_SALVO=m +CONFIG_PHY_CADENCE_SIERRA=m +CONFIG_PHY_CADENCE_TORRENT=m +CONFIG_PHY_FSL_IMX8MQ_USB=m +CONFIG_PHY_HI3660_USB=m +CONFIG_PHY_HI3670_USB=m +CONFIG_PHY_HI6220_USB=m +CONFIG_PHY_HISI_INNO_USB2=m +CONFIG_PHY_HISTB_COMBPHY=m +CONFIG_PHY_INTEL_KEEMBAY_EMMC=m +CONFIG_PHY_INTEL_KEEMBAY_USB=m CONFIG_PHY_INTEL_LGM_EMMC=m +CONFIG_PHY_J721E_WIZ=m +CONFIG_PHY_MAPPHONE_MDM6600=m +CONFIG_PHY_MESON8B_USB2=m +CONFIG_PHY_MESON_AXG_MIPI_DPHY=m +CONFIG_PHY_MESON_AXG_MIPI_PCIE_ANALOG=y +CONFIG_PHY_MESON_AXG_PCIE=y +CONFIG_PHY_MESON_G12A_USB2=m +CONFIG_PHY_MESON_G12A_USB3_PCIE=m +CONFIG_PHY_MESON_GXL_USB2=m +CONFIG_PHY_MIXEL_MIPI_DPHY=m +CONFIG_PHY_MTK_HDMI=m +CONFIG_PHY_MTK_MIPI_DSI=m +CONFIG_PHY_MTK_TPHY=m +CONFIG_PHY_MTK_UFS=m +CONFIG_PHY_MTK_XSPHY=m +CONFIG_PHY_MVEBU_A3700_COMPHY=m +CONFIG_PHY_MVEBU_A3700_UTMI=m +CONFIG_PHY_MVEBU_A38X_COMPHY=m +CONFIG_PHY_MVEBU_CP110_COMPHY=m +CONFIG_PHY_NS2_PCIE=y +CONFIG_PHY_NS2_USB_DRD=m +CONFIG_PHY_OCELOT_SERDES=m # CONFIG_PHY_PXA_28NM_HSIC is not set # CONFIG_PHY_PXA_28NM_USB2 is not set +CONFIG_PHY_QCOM_APQ8064_SATA=m +CONFIG_PHY_QCOM_IPQ4019_USB=m +CONFIG_PHY_QCOM_IPQ806X_SATA=m +CONFIG_PHY_QCOM_IPQ806X_USB=m +CONFIG_PHY_QCOM_PCIE2=m +CONFIG_PHY_QCOM_QMP=m +CONFIG_PHY_QCOM_QUSB2=m +CONFIG_PHY_QCOM_USB_HS_28NM=m +CONFIG_PHY_QCOM_USB_SNPS_FEMTO_V2=m +CONFIG_PHY_QCOM_USB_SS=m +CONFIG_PHY_RCAR_GEN2=m +CONFIG_PHY_RCAR_GEN3_PCIE=m +CONFIG_PHY_RCAR_GEN3_USB2=m +CONFIG_PHY_RCAR_GEN3_USB3=m +CONFIG_PHY_ROCKCHIP_DP=m +CONFIG_PHY_ROCKCHIP_DPHY_RX0=m +CONFIG_PHY_ROCKCHIP_EMMC=m +CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=m +CONFIG_PHY_ROCKCHIP_INNO_HDMI=m +CONFIG_PHY_ROCKCHIP_INNO_USB2=m +CONFIG_PHY_ROCKCHIP_PCIE=m +CONFIG_PHY_ROCKCHIP_TYPEC=m +CONFIG_PHY_ROCKCHIP_USB=m +CONFIG_PHY_SUN4I_USB=m +CONFIG_PHY_SUN50I_USB3=m +CONFIG_PHY_SUN6I_MIPI_DPHY=m +# CONFIG_PHY_SUN9I_USB is not set +CONFIG_PHY_TEGRA194_P2U=m +CONFIG_PHY_TEGRA_XUSB=m +CONFIG_PHY_XGENE=y +CONFIG_PHY_XILINX_ZYNQMP=m CONFIG_PI433=m +# CONFIG_PID_IN_CONTEXTIDR is not set CONFIG_PID_NS=y CONFIG_PINCONF=y CONFIG_PINCTRL=y # CONFIG_PINCTRL_ALDERLAKE is not set # CONFIG_PINCTRL_AMD is not set +CONFIG_PINCTRL_APQ8064=m +CONFIG_PINCTRL_APQ8084=m +CONFIG_PINCTRL_ARMADA_37XX=y +CONFIG_PINCTRL_ARMADA_AP806=y +CONFIG_PINCTRL_ARMADA_CP110=y +CONFIG_PINCTRL_AS370=y +CONFIG_PINCTRL_AXP209=m CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_BCM2835=y +CONFIG_PINCTRL_BERLIN=y +CONFIG_PINCTRL_BERLIN_BG4CT=y +CONFIG_PINCTRL_BM1880=y # CONFIG_PINCTRL_BROXTON is not set CONFIG_PINCTRL_CANNONLAKE=m CONFIG_PINCTRL_CEDARFORK=m @@ -4021,21 +5427,141 @@ CONFIG_PINCTRL_DENVERTON=m # CONFIG_PINCTRL_EMMITSBURG is not set # CONFIG_PINCTRL_GEMINILAKE is not set CONFIG_PINCTRL_ICELAKE=m +CONFIG_PINCTRL_IMX=y +CONFIG_PINCTRL_IMX8DXL=y +CONFIG_PINCTRL_IMX8MM=y +CONFIG_PINCTRL_IMX8MN=y +CONFIG_PINCTRL_IMX8MP=y +CONFIG_PINCTRL_IMX8MQ=y +CONFIG_PINCTRL_IMX8QM=y +CONFIG_PINCTRL_IMX8QXP=y +CONFIG_PINCTRL_IMX_SCU=y CONFIG_PINCTRL_INTEL=y +CONFIG_PINCTRL_IPQ4019=m +CONFIG_PINCTRL_IPQ6018=m +CONFIG_PINCTRL_IPQ8064=m +CONFIG_PINCTRL_IPQ8074=m +CONFIG_PINCTRL_IPROC_GPIO=y CONFIG_PINCTRL_JASPERLAKE=m # CONFIG_PINCTRL_LAKEFIELD is not set CONFIG_PINCTRL_LEWISBURG=m +CONFIG_PINCTRL_LPASS_LPI=m CONFIG_PINCTRL_LYNXPOINT=m CONFIG_PINCTRL_MADERA=m CONFIG_PINCTRL_MCP23S08=m CONFIG_PINCTRL_MCP23S08_I2C=m CONFIG_PINCTRL_MCP23S08_SPI=m +CONFIG_PINCTRL_MDM9615=m +CONFIG_PINCTRL_MESON=y +CONFIG_PINCTRL_MESON8_PMX=y +CONFIG_PINCTRL_MESON_A1=y +CONFIG_PINCTRL_MESON_AXG=y +CONFIG_PINCTRL_MESON_AXG_PMX=y +CONFIG_PINCTRL_MESON_G12A=y +CONFIG_PINCTRL_MESON_GXBB=y +CONFIG_PINCTRL_MESON_GXL=y +CONFIG_PINCTRL_MICROCHIP_SGPIO=y +CONFIG_PINCTRL_MSM=y +CONFIG_PINCTRL_MSM8226=m +CONFIG_PINCTRL_MSM8660=m +CONFIG_PINCTRL_MSM8916=m +CONFIG_PINCTRL_MSM8953=m +CONFIG_PINCTRL_MSM8960=m +CONFIG_PINCTRL_MSM8976=m +CONFIG_PINCTRL_MSM8994=m +CONFIG_PINCTRL_MSM8996=m +CONFIG_PINCTRL_MSM8998=m +CONFIG_PINCTRL_MSM8X74=m +CONFIG_PINCTRL_MT2712=y +CONFIG_PINCTRL_MT6765=y +CONFIG_PINCTRL_MT6779=m +CONFIG_PINCTRL_MT6797=y +CONFIG_PINCTRL_MT7622=y +CONFIG_PINCTRL_MT8167=y +CONFIG_PINCTRL_MT8173=y +CONFIG_PINCTRL_MT8183=y +CONFIG_PINCTRL_MT8192=y +CONFIG_PINCTRL_MT8516=y +CONFIG_PINCTRL_MTK=y +CONFIG_PINCTRL_MTK_MOORE=y +CONFIG_PINCTRL_MTK_PARIS=y +CONFIG_PINCTRL_MTK_V2=y +CONFIG_PINCTRL_MVEBU=y +CONFIG_PINCTRL_NS2_MUX=y +CONFIG_PINCTRL_OCELOT=y +CONFIG_PINCTRL_OWL=y +CONFIG_PINCTRL_PFC_R8A774A1=y +CONFIG_PINCTRL_PFC_R8A774B1=y +CONFIG_PINCTRL_PFC_R8A774C0=y +CONFIG_PINCTRL_PFC_R8A774E1=y +CONFIG_PINCTRL_PFC_R8A77950=y +CONFIG_PINCTRL_PFC_R8A77951=y +CONFIG_PINCTRL_PFC_R8A77960=y +CONFIG_PINCTRL_PFC_R8A77961=y +CONFIG_PINCTRL_PFC_R8A77965=y +CONFIG_PINCTRL_PFC_R8A77970=y +CONFIG_PINCTRL_PFC_R8A77980=y +CONFIG_PINCTRL_PFC_R8A77990=y +CONFIG_PINCTRL_PFC_R8A77995=y +CONFIG_PINCTRL_QCOM_SSBI_PMIC=m +CONFIG_PINCTRL_QCS404=m +CONFIG_PINCTRL_QDF2XXX=m +CONFIG_PINCTRL_RENESAS=y +CONFIG_PINCTRL_RK805=m +CONFIG_PINCTRL_ROCKCHIP=y +CONFIG_PINCTRL_S500=y +CONFIG_PINCTRL_S700=y +CONFIG_PINCTRL_S900=y +CONFIG_PINCTRL_SC7180=m +CONFIG_PINCTRL_SC7280=m +CONFIG_PINCTRL_SDM660=m +CONFIG_PINCTRL_SDM845=m +CONFIG_PINCTRL_SDX55=m +CONFIG_PINCTRL_SH_PFC=y +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINCTRL_SM8150=m +CONFIG_PINCTRL_SM8250=m +CONFIG_PINCTRL_SPRD=y +CONFIG_PINCTRL_SPRD_SC9860=y +CONFIG_PINCTRL_STMFX=m +CONFIG_PINCTRL_SUN4I_A10=y +CONFIG_PINCTRL_SUN50I_A100=y +CONFIG_PINCTRL_SUN50I_A100_R=y +CONFIG_PINCTRL_SUN50I_A64=y +CONFIG_PINCTRL_SUN50I_A64_R=y +CONFIG_PINCTRL_SUN50I_H5=y +CONFIG_PINCTRL_SUN50I_H6=y +CONFIG_PINCTRL_SUN50I_H6_R=y +CONFIG_PINCTRL_SUN5I=y +CONFIG_PINCTRL_SUN6I_A31=y +CONFIG_PINCTRL_SUN6I_A31_R=y +CONFIG_PINCTRL_SUN8I_A23=y +CONFIG_PINCTRL_SUN8I_A23_R=y +CONFIG_PINCTRL_SUN8I_A33=y +CONFIG_PINCTRL_SUN8I_A83T=y +CONFIG_PINCTRL_SUN8I_A83T_R=y +CONFIG_PINCTRL_SUN8I_H3=y +CONFIG_PINCTRL_SUN8I_H3_R=y +CONFIG_PINCTRL_SUN8I_V3S=y +CONFIG_PINCTRL_SUN9I_A80=y +CONFIG_PINCTRL_SUN9I_A80_R=y # CONFIG_PINCTRL_SUNRISEPOINT is not set +CONFIG_PINCTRL_SUNXI=y +CONFIG_PINCTRL_TEGRA=y +CONFIG_PINCTRL_TEGRA124=y +CONFIG_PINCTRL_TEGRA194=y +CONFIG_PINCTRL_TEGRA210=y +CONFIG_PINCTRL_TEGRA_XUSB=y CONFIG_PINCTRL_TIGERLAKE=m +CONFIG_PINCTRL_TMPV7700=y +CONFIG_PINCTRL_VISCONTI=y CONFIG_PINMUX=y CONFIG_PKCS7_MESSAGE_PARSER=y CONFIG_PKCS7_TEST_KEY=m CONFIG_PKCS8_PRIVATE_KEY_PARSER=m +CONFIG_PL320_MBOX=y +CONFIG_PL330_DMA=m +CONFIG_PLATFORM_MHU=m CONFIG_PLDMFW=y # CONFIG_PLIP is not set CONFIG_PLX_DMA=m @@ -4051,6 +5577,7 @@ CONFIG_PM_DEBUG=y CONFIG_PM_DEVFREQ=y CONFIG_PM_DEVFREQ_EVENT=y CONFIG_PM_GENERIC_DOMAINS=y +CONFIG_PM_GENERIC_DOMAINS_OF=y CONFIG_PM_GENERIC_DOMAINS_SLEEP=y CONFIG_PM_NOTIFIER_ERROR_INJECT=m CONFIG_PM_OPP=y @@ -4076,7 +5603,21 @@ CONFIG_POSIX_MQUEUE_SYSCTL=y CONFIG_POSIX_TIMERS=y # CONFIG_POWERCAP is not set CONFIG_POWER_RESET=y +# CONFIG_POWER_RESET_BRCMSTB is not set +CONFIG_POWER_RESET_GPIO=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_POWER_RESET_HISI=y +CONFIG_POWER_RESET_LINKSTATION=m +CONFIG_POWER_RESET_LTC2952=y +CONFIG_POWER_RESET_MSM=y +CONFIG_POWER_RESET_OCELOT_RESET=y +CONFIG_POWER_RESET_REGULATOR=y CONFIG_POWER_RESET_RESTART=y +CONFIG_POWER_RESET_SC27XX=m +CONFIG_POWER_RESET_SYSCON=y +CONFIG_POWER_RESET_SYSCON_POWEROFF=y +CONFIG_POWER_RESET_VEXPRESS=y +# CONFIG_POWER_RESET_XGENE is not set CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set CONFIG_POWER_SUPPLY_HWMON=y @@ -4152,23 +5693,114 @@ CONFIG_PSTORE_RAM=m CONFIG_PTDUMP_CORE=y # CONFIG_PTDUMP_DEBUGFS is not set CONFIG_PTP_1588_CLOCK=y +CONFIG_PTP_1588_CLOCK_DTE=m CONFIG_PTP_1588_CLOCK_IDT82P33=m CONFIG_PTP_1588_CLOCK_IDTCM=m CONFIG_PTP_1588_CLOCK_KVM=m # CONFIG_PTP_1588_CLOCK_OCP is not set +CONFIG_PTP_1588_CLOCK_QORIQ=m CONFIG_PTP_1588_CLOCK_VMW=m CONFIG_PUNIT_ATOM_DEBUG=m CONFIG_PVH=y CONFIG_PVPANIC=m -# CONFIG_PWM is not set +CONFIG_PWM_ATMEL_HLCDC_PWM=m +CONFIG_PWM_ATMEL_TCB=m +CONFIG_PWM_BCM2835=m +CONFIG_PWM_BCM_IPROC=m +CONFIG_PWM_BERLIN=m +CONFIG_PWM_BRCMSTB=m +# CONFIG_PWM_DEBUG is not set +CONFIG_PWM_DWC=m +CONFIG_PWM_FSL_FTM=m +CONFIG_PWM_HIBVT=m +CONFIG_PWM_IMX1=m +CONFIG_PWM_IMX27=m +CONFIG_PWM_IMX_TPM=m +CONFIG_PWM_IQS620A=m +CONFIG_PWM_KEEMBAY=m +CONFIG_PWM_LP3943=m +CONFIG_PWM_MEDIATEK=m +CONFIG_PWM_MESON=m +CONFIG_PWM_MTK_DISP=m +CONFIG_PWM_PCA9685=m +CONFIG_PWM_RCAR=m +CONFIG_PWM_RENESAS_TPU=m +CONFIG_PWM_ROCKCHIP=m +CONFIG_PWM_SL28CPLD=m +CONFIG_PWM_SPRD=m +CONFIG_PWM_STMPE=y +CONFIG_PWM_SUN4I=m +CONFIG_PWM_SYSFS=y +CONFIG_PWM_TEGRA=m +CONFIG_PWM_TIECAP=m +CONFIG_PWM_TIEHRPWM=m +CONFIG_PXA168_ETH=m +CONFIG_QCOM_A53PLL=m +CONFIG_QCOM_AOSS_QMP=m +CONFIG_QCOM_APCS_IPC=m +CONFIG_QCOM_APR=m +CONFIG_QCOM_BAM_DMA=m +CONFIG_QCOM_CLK_APCC_MSM8996=m +CONFIG_QCOM_CLK_APCS_MSM8916=m +CONFIG_QCOM_CLK_RPM=m +CONFIG_QCOM_CLK_RPMH=m +CONFIG_QCOM_CLK_SMD_RPM=m +CONFIG_QCOM_COMMAND_DB=y +CONFIG_QCOM_CPR=m +CONFIG_QCOM_EBI2=y +CONFIG_QCOM_FALKOR_ERRATUM_1003=y +CONFIG_QCOM_FALKOR_ERRATUM_1009=y +CONFIG_QCOM_FALKOR_ERRATUM_E1041=y +CONFIG_QCOM_FASTRPC=m +CONFIG_QCOM_GDSC=y +CONFIG_QCOM_GENI_SE=m +CONFIG_QCOM_GPI_DMA=m +CONFIG_QCOM_GSBI=m +CONFIG_QCOM_HFPLL=m # CONFIG_QCOM_HIDMA is not set # CONFIG_QCOM_HIDMA_MGMT is not set +CONFIG_QCOM_IOMMU=y +CONFIG_QCOM_IPCC=y +CONFIG_QCOM_IRQ_COMBINER=y +CONFIG_QCOM_KRYO_L2_ACCESSORS=y +CONFIG_QCOM_L2_PMU=y +CONFIG_QCOM_L3_PMU=y +CONFIG_QCOM_LLCC=m +CONFIG_QCOM_MDT_LOADER=m +CONFIG_QCOM_OCMEM=m +CONFIG_QCOM_PDC=y +CONFIG_QCOM_PDR_HELPERS=m +CONFIG_QCOM_QDF2400_ERRATUM_0065=y +CONFIG_QCOM_QFPROM=m +CONFIG_QCOM_QMI_HELPERS=m +CONFIG_QCOM_RMTFS_MEM=m +CONFIG_QCOM_RPMCC=y +CONFIG_QCOM_RPMH=y +CONFIG_QCOM_RPMHPD=y +CONFIG_QCOM_RPMPD=m +CONFIG_QCOM_SCM=y +# CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT is not set +CONFIG_QCOM_SMD_RPM=m +CONFIG_QCOM_SMEM=m +CONFIG_QCOM_SMEM_STATE=y +CONFIG_QCOM_SMP2P=m +CONFIG_QCOM_SMSM=m +CONFIG_QCOM_SOCINFO=m +CONFIG_QCOM_TSENS=m +CONFIG_QCOM_WCNSS_CTRL=m +CONFIG_QCOM_WDT=m +CONFIG_QCS_GCC_404=m +CONFIG_QCS_Q6SSTOP_404=m +CONFIG_QCS_TURING_404=m +CONFIG_QE_TDM=y CONFIG_QFMT_V1=m CONFIG_QFMT_V2=m CONFIG_QLGE=m CONFIG_QNX4FS_FS=m # CONFIG_QNX6FS_DEBUG is not set CONFIG_QNX6FS_FS=m +CONFIG_QORIQ_CPUFREQ=m +CONFIG_QORIQ_THERMAL=m CONFIG_QRTR=m CONFIG_QRTR_MHI=m CONFIG_QRTR_SMD=m @@ -4176,6 +5808,7 @@ CONFIG_QRTR_TUN=m # CONFIG_QSEMI_PHY is not set CONFIG_QUEUED_RWLOCKS=y CONFIG_QUEUED_SPINLOCKS=y +CONFIG_QUICC_ENGINE=y CONFIG_QUOTA=y CONFIG_QUOTACTL=y # CONFIG_QUOTA_DEBUG is not set @@ -4189,6 +5822,7 @@ CONFIG_RAID_ATTRS=m CONFIG_RANDOMIZE_BASE=y CONFIG_RANDOMIZE_MEMORY=y CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa +CONFIG_RANDOMIZE_MODULE_REGION_FULL=y CONFIG_RANDOM_TRUST_BOOTLOADER=y CONFIG_RANDOM_TRUST_CPU=y CONFIG_RAPIDIO=y @@ -4206,10 +5840,15 @@ CONFIG_RAPIDIO_MPORT_CDEV=m # CONFIG_RAPIDIO_TSI57X is not set CONFIG_RAPIDIO_TSI721=m CONFIG_RAS=y +CONFIG_RASPBERRYPI_FIRMWARE=y +CONFIG_RASPBERRYPI_POWER=y CONFIG_RAS_CEC=y # CONFIG_RAS_CEC_DEBUG is not set CONFIG_RATIONAL=y CONFIG_RAW_DRIVER=m +CONFIG_RCAR_DMAC=m +CONFIG_RCAR_GEN3_THERMAL=m +CONFIG_RCAR_THERMAL=m CONFIG_RCU_CPU_STALL_TIMEOUT=60 # CONFIG_RCU_EQS_DEBUG is not set # CONFIG_RCU_EXPERT is not set @@ -4243,6 +5882,7 @@ CONFIG_RD_ZSTD=y # CONFIG_READABLE_ASM is not set # CONFIG_READ_ONLY_THP_FOR_FS is not set CONFIG_REALTEK_PHY=m +CONFIG_REBOOT_MODE=m CONFIG_REED_SOLOMON=m CONFIG_REED_SOLOMON_DEC8=y CONFIG_REED_SOLOMON_ENC8=y @@ -4255,51 +5895,82 @@ CONFIG_REGMAP_SPI=y CONFIG_REGULATOR=y CONFIG_REGULATOR_88PG86X=m # CONFIG_REGULATOR_ACT8865 is not set +CONFIG_REGULATOR_ACT8945A=m # CONFIG_REGULATOR_AD5398 is not set +CONFIG_REGULATOR_ANATOP=m +CONFIG_REGULATOR_ARM_SCMI=m # CONFIG_REGULATOR_AXP20X is not set # CONFIG_REGULATOR_BCM590XX is not set CONFIG_REGULATOR_BD9571MWV=m +CONFIG_REGULATOR_CPCAP=m # CONFIG_REGULATOR_DA9052 is not set +CONFIG_REGULATOR_DA9063=m +CONFIG_REGULATOR_DA9121=m # CONFIG_REGULATOR_DA9210 is not set # CONFIG_REGULATOR_DA9211 is not set # CONFIG_REGULATOR_DEBUG is not set # CONFIG_REGULATOR_FAN53555 is not set +CONFIG_REGULATOR_FAN53880=m CONFIG_REGULATOR_FIXED_VOLTAGE=m # CONFIG_REGULATOR_GPIO is not set +CONFIG_REGULATOR_HI6421=m +CONFIG_REGULATOR_HI6421V530=m +CONFIG_REGULATOR_HI655X=m # CONFIG_REGULATOR_ISL6271A is not set # CONFIG_REGULATOR_ISL9305 is not set CONFIG_REGULATOR_LM363X=m # CONFIG_REGULATOR_LP3971 is not set # CONFIG_REGULATOR_LP3972 is not set # CONFIG_REGULATOR_LP872X is not set +CONFIG_REGULATOR_LP873X=m # CONFIG_REGULATOR_LP8755 is not set +CONFIG_REGULATOR_LP87565=m # CONFIG_REGULATOR_LTC3589 is not set # CONFIG_REGULATOR_LTC3676 is not set # CONFIG_REGULATOR_MAX14577 is not set # CONFIG_REGULATOR_MAX1586 is not set +CONFIG_REGULATOR_MAX77650=m # CONFIG_REGULATOR_MAX77693 is not set CONFIG_REGULATOR_MAX77826=m # CONFIG_REGULATOR_MAX8649 is not set # CONFIG_REGULATOR_MAX8660 is not set # CONFIG_REGULATOR_MAX8907 is not set # CONFIG_REGULATOR_MAX8952 is not set +CONFIG_REGULATOR_MAX8973=m # CONFIG_REGULATOR_MC13783 is not set # CONFIG_REGULATOR_MC13892 is not set +CONFIG_REGULATOR_MCP16502=m +CONFIG_REGULATOR_MP5416=m CONFIG_REGULATOR_MP8859=m +CONFIG_REGULATOR_MP886X=m +CONFIG_REGULATOR_MPQ7920=m # CONFIG_REGULATOR_MT6311 is not set # CONFIG_REGULATOR_MT6360 is not set +CONFIG_REGULATOR_MT6380=m # CONFIG_REGULATOR_PCA9450 is not set # CONFIG_REGULATOR_PCAP is not set # CONFIG_REGULATOR_PCF50633 is not set +CONFIG_REGULATOR_PF8X00=m +CONFIG_REGULATOR_PFUZE100=m # CONFIG_REGULATOR_PV88060 is not set # CONFIG_REGULATOR_PV88080 is not set # CONFIG_REGULATOR_PV88090 is not set +CONFIG_REGULATOR_PWM=m +CONFIG_REGULATOR_QCOM_RPM=m +CONFIG_REGULATOR_QCOM_RPMH=m +CONFIG_REGULATOR_QCOM_SMD_RPM=m # CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY is not set +CONFIG_REGULATOR_RK808=m +CONFIG_REGULATOR_RN5T618=m # CONFIG_REGULATOR_RT4801 is not set # CONFIG_REGULATOR_RT5033 is not set # CONFIG_REGULATOR_RTMV20 is not set +CONFIG_REGULATOR_SC2731=m # CONFIG_REGULATOR_SKY81452 is not set CONFIG_REGULATOR_SLG51000=m +CONFIG_REGULATOR_SY8106A=m +CONFIG_REGULATOR_SY8824X=m +CONFIG_REGULATOR_SY8827N=m # CONFIG_REGULATOR_TPS51632 is not set # CONFIG_REGULATOR_TPS6105X is not set # CONFIG_REGULATOR_TPS62360 is not set @@ -4307,10 +5978,15 @@ CONFIG_REGULATOR_SLG51000=m # CONFIG_REGULATOR_TPS6507X is not set # CONFIG_REGULATOR_TPS65086 is not set CONFIG_REGULATOR_TPS65132=m +CONFIG_REGULATOR_TPS65217=m +CONFIG_REGULATOR_TPS65218=m # CONFIG_REGULATOR_TPS6524X is not set # CONFIG_REGULATOR_TPS65912 is not set # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set +CONFIG_REGULATOR_VCTRL=m +CONFIG_REGULATOR_VEXPRESS=m # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +CONFIG_REGULATOR_VQMMC_IPQ4019=m # CONFIG_REGULATOR_WM831X is not set # CONFIG_REGULATOR_WM8994 is not set # CONFIG_REISERFS_CHECK is not set @@ -4322,9 +5998,30 @@ CONFIG_REISERFS_FS_XATTR=y CONFIG_RELAY=y CONFIG_RELOCATABLE=y # CONFIG_REMOTEPROC is not set +CONFIG_RENESAS_DMA=y +CONFIG_RENESAS_IRQC=y CONFIG_RENESAS_PHY=m +CONFIG_RENESAS_RPCIF=m +CONFIG_RENESAS_RZAWDT=m +CONFIG_RENESAS_USB_DMAC=m +CONFIG_RENESAS_WDT=m CONFIG_RESET_ATTACK_MITIGATION=y +CONFIG_RESET_BERLIN=y +CONFIG_RESET_BRCMSTB=m +CONFIG_RESET_BRCMSTB_RESCAL=y CONFIG_RESET_CONTROLLER=y +CONFIG_RESET_HISI=y +CONFIG_RESET_IMX7=y +CONFIG_RESET_MESON=y +CONFIG_RESET_MESON_AUDIO_ARB=m +CONFIG_RESET_QCOM_AOSS=y +CONFIG_RESET_QCOM_PDC=m +CONFIG_RESET_RASPBERRYPI=m +CONFIG_RESET_SCMI=m +CONFIG_RESET_SIMPLE=y +CONFIG_RESET_SUNXI=y +CONFIG_RESET_TEGRA_BPMP=y +CONFIG_RESET_TI_SCI=m CONFIG_RESET_TI_SYSCON=m CONFIG_RETPOLINE=y CONFIG_RETU_WATCHDOG=m @@ -4342,8 +6039,28 @@ CONFIG_RIONET=m CONFIG_RIONET_RX_SIZE=128 CONFIG_RIONET_TX_SIZE=128 # CONFIG_RMI4_CORE is not set +CONFIG_RN5T618_POWER=m +CONFIG_RN5T618_WATCHDOG=m +CONFIG_ROCKCHIP_ANALOGIX_DP=y +CONFIG_ROCKCHIP_CDN_DP=y +CONFIG_ROCKCHIP_DW_HDMI=y +CONFIG_ROCKCHIP_DW_MIPI_DSI=y +CONFIG_ROCKCHIP_EFUSE=m +CONFIG_ROCKCHIP_GRF=y +CONFIG_ROCKCHIP_INNO_HDMI=y +CONFIG_ROCKCHIP_IODOMAIN=m +CONFIG_ROCKCHIP_IOMMU=y +CONFIG_ROCKCHIP_LVDS=y +CONFIG_ROCKCHIP_MBOX=y +CONFIG_ROCKCHIP_OTP=m CONFIG_ROCKCHIP_PHY=m +CONFIG_ROCKCHIP_PM_DOMAINS=y +CONFIG_ROCKCHIP_RGB=y +CONFIG_ROCKCHIP_RK3066_HDMI=y +CONFIG_ROCKCHIP_THERMAL=m +CONFIG_ROCKCHIP_TIMER=y CONFIG_ROCKETPORT=m +CONFIG_RODATA_FULL_DEFAULT_ENABLED=y CONFIG_ROMFS_BACKED_BY_BLOCK=y CONFIG_ROMFS_FS=m CONFIG_ROMFS_ON_BLOCK=y @@ -4354,17 +6071,24 @@ CONFIG_RPMSG_CHAR=m CONFIG_RPMSG_NS=m CONFIG_RPMSG_QCOM_GLINK=m CONFIG_RPMSG_QCOM_GLINK_RPM=m +CONFIG_RPMSG_QCOM_GLINK_SMEM=m +CONFIG_RPMSG_QCOM_SMD=m CONFIG_RPMSG_VIRTIO=m CONFIG_RPS=y CONFIG_RSEQ=y +CONFIG_RST_RCAR=y CONFIG_RTC_CLASS=y # CONFIG_RTC_DEBUG is not set # CONFIG_RTC_DRV_ABB5ZES3 is not set CONFIG_RTC_DRV_ABEOZ9=m # CONFIG_RTC_DRV_ABX80X is not set +CONFIG_RTC_DRV_ARMADA38X=m # CONFIG_RTC_DRV_BQ32K is not set # CONFIG_RTC_DRV_BQ4802 is not set +CONFIG_RTC_DRV_BRCMSTB=m +CONFIG_RTC_DRV_CADENCE=m CONFIG_RTC_DRV_CMOS=y +CONFIG_RTC_DRV_CPCAP=m # CONFIG_RTC_DRV_DA9052 is not set # CONFIG_RTC_DRV_DA9063 is not set # CONFIG_RTC_DRV_DS1286 is not set @@ -4382,10 +6106,17 @@ CONFIG_RTC_DRV_CMOS=y # CONFIG_RTC_DRV_DS1742 is not set # CONFIG_RTC_DRV_DS2404 is not set # CONFIG_RTC_DRV_DS3232 is not set +CONFIG_RTC_DRV_EFI=y # CONFIG_RTC_DRV_EM3027 is not set # CONFIG_RTC_DRV_FM3130 is not set +CONFIG_RTC_DRV_FSL_FTM_ALARM=m CONFIG_RTC_DRV_FTRTC010=m +CONFIG_RTC_DRV_GOLDFISH=m +CONFIG_RTC_DRV_HYM8563=m +CONFIG_RTC_DRV_IMXDI=m +CONFIG_RTC_DRV_IMX_SC=m # CONFIG_RTC_DRV_ISL12022 is not set +CONFIG_RTC_DRV_ISL12026=m # CONFIG_RTC_DRV_ISL1208 is not set # CONFIG_RTC_DRV_M41T80 is not set # CONFIG_RTC_DRV_M41T93 is not set @@ -4399,7 +6130,13 @@ CONFIG_RTC_DRV_FTRTC010=m # CONFIG_RTC_DRV_MAX8907 is not set # CONFIG_RTC_DRV_MC13XXX is not set # CONFIG_RTC_DRV_MCP795 is not set +CONFIG_RTC_DRV_MESON_VRTC=m # CONFIG_RTC_DRV_MSM6242 is not set +CONFIG_RTC_DRV_MT2712=m +CONFIG_RTC_DRV_MT7622=m +CONFIG_RTC_DRV_MV=y +CONFIG_RTC_DRV_MXC=m +CONFIG_RTC_DRV_MXC_V2=m # CONFIG_RTC_DRV_PCAP is not set # CONFIG_RTC_DRV_PCF2123 is not set # CONFIG_RTC_DRV_PCF2127 is not set @@ -4409,10 +6146,16 @@ CONFIG_RTC_DRV_FTRTC010=m CONFIG_RTC_DRV_PCF85363=m # CONFIG_RTC_DRV_PCF8563 is not set # CONFIG_RTC_DRV_PCF8583 is not set +CONFIG_RTC_DRV_PL030=m +CONFIG_RTC_DRV_PL031=m +CONFIG_RTC_DRV_R7301=m # CONFIG_RTC_DRV_R9701 is not set +CONFIG_RTC_DRV_RC5T619=m +CONFIG_RTC_DRV_RK808=m # CONFIG_RTC_DRV_RP5C01 is not set # CONFIG_RTC_DRV_RS5C348 is not set # CONFIG_RTC_DRV_RS5C372 is not set +CONFIG_RTC_DRV_RTD119X=y CONFIG_RTC_DRV_RV3028=m # CONFIG_RTC_DRV_RV3029C2 is not set # CONFIG_RTC_DRV_RV3032 is not set @@ -4423,12 +6166,19 @@ CONFIG_RTC_DRV_RV3028=m # CONFIG_RTC_DRV_RX8025 is not set # CONFIG_RTC_DRV_RX8581 is not set # CONFIG_RTC_DRV_S35390A is not set +CONFIG_RTC_DRV_SC27XX=m CONFIG_RTC_DRV_SD3078=m +CONFIG_RTC_DRV_SH=m +CONFIG_RTC_DRV_SNVS=m # CONFIG_RTC_DRV_STK17TA8 is not set +CONFIG_RTC_DRV_SUN6I=y +CONFIG_RTC_DRV_TEGRA=m # CONFIG_RTC_DRV_TEST is not set # CONFIG_RTC_DRV_V3020 is not set # CONFIG_RTC_DRV_WM831X is not set # CONFIG_RTC_DRV_X1205 is not set +CONFIG_RTC_DRV_XGENE=y +CONFIG_RTC_DRV_ZYNQMP=m CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" CONFIG_RTC_I2C_AND_SPI=m @@ -4441,6 +6191,7 @@ CONFIG_RTC_MC146818_LIB=y CONFIG_RTC_NVMEM=y CONFIG_RTC_SYSTOHC=y CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +CONFIG_RTD119X_WATCHDOG=y CONFIG_RTS5208=m # CONFIG_RT_GROUP_SCHED is not set CONFIG_RT_MUTEXES=y @@ -4454,6 +6205,7 @@ CONFIG_S2IO=m # CONFIG_SATA_ACARD_AHCI is not set CONFIG_SATA_AHCI=m CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_AHCI_SEATTLE=m CONFIG_SATA_DWC=m # CONFIG_SATA_DWC_DEBUG is not set CONFIG_SATA_DWC_OLD_DMA=y @@ -4465,6 +6217,7 @@ CONFIG_SATA_MOBILE_LPM_POLICY=3 CONFIG_SATA_PMP=y # CONFIG_SATA_PROMISE is not set # CONFIG_SATA_QSTOR is not set +CONFIG_SATA_RCAR=m # CONFIG_SATA_SIL is not set # CONFIG_SATA_SIL24 is not set # CONFIG_SATA_SIS is not set @@ -4480,6 +6233,7 @@ CONFIG_SBITMAP=y CONFIG_SBNI=m # CONFIG_SBNI_MULTILINE is not set CONFIG_SC1200_WDT=m +CONFIG_SC27XX_EFUSE=m # CONFIG_SCF_TORTURE_TEST is not set CONFIG_SCHEDSTATS=y CONFIG_SCHED_AUTOGROUP=y @@ -4491,6 +6245,7 @@ CONFIG_SCHED_MC_PRIO=y CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_SCHED_SMT=y CONFIG_SCHED_STACK_END_CHECK=y +CONFIG_SCHED_THERMAL_PRESSURE=y CONFIG_SCHED_TRACER=y CONFIG_SCSI=y CONFIG_SCSI_3W_9XXX=m @@ -4528,6 +6283,8 @@ CONFIG_SCSI_FDOMAIN=m CONFIG_SCSI_FDOMAIN_PCI=m CONFIG_SCSI_FLASHPOINT=y CONFIG_SCSI_GDTH=m +CONFIG_SCSI_HISI_SAS=m +CONFIG_SCSI_HISI_SAS_PCI=m CONFIG_SCSI_HPSA=m CONFIG_SCSI_HPTIOP=m CONFIG_SCSI_IMM=m @@ -4582,6 +6339,7 @@ CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 CONFIG_SCSI_SYM53C8XX_MMIO=y # CONFIG_SCSI_UFSHCD is not set +CONFIG_SCSI_UFS_TI_J721E=m CONFIG_SCSI_VIRTIO=m CONFIG_SCSI_WD719X=m CONFIG_SCTP_COOKIE_HMAC_MD5=y @@ -4590,6 +6348,21 @@ CONFIG_SCTP_COOKIE_HMAC_SHA1=y # CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set # CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y +CONFIG_SC_CAMCC_7180=m +CONFIG_SC_DISPCC_7180=m +CONFIG_SC_GCC_7180=m +CONFIG_SC_GPUCC_7180=m +CONFIG_SC_LPASS_CORECC_7180=m +CONFIG_SC_MSS_7180=m +CONFIG_SC_VIDEOCC_7180=m +CONFIG_SDM_CAMCC_845=m +CONFIG_SDM_DISPCC_845=m +CONFIG_SDM_GCC_660=m +CONFIG_SDM_GCC_845=m +CONFIG_SDM_GPUCC_845=m +CONFIG_SDM_LPASSCC_845=m +CONFIG_SDM_VIDEOCC_845=m +CONFIG_SDX_GCC_55=m CONFIG_SECCOMP=y # CONFIG_SECCOMP_CACHE_DEBUG is not set CONFIG_SECCOMP_FILTER=y @@ -4662,6 +6435,8 @@ CONFIG_SENSORS_AMC6821=m CONFIG_SENSORS_AMD_ENERGY=m CONFIG_SENSORS_APDS990X=m CONFIG_SENSORS_APPLESMC=m +CONFIG_SENSORS_ARM_SCMI=m +CONFIG_SENSORS_ARM_SCPI=m CONFIG_SENSORS_AS370=m CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ASC7621=m @@ -4692,6 +6467,8 @@ CONFIG_SENSORS_G760A=m CONFIG_SENSORS_G762=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_GPIO_FAN=m +CONFIG_SENSORS_GSC=m # CONFIG_SENSORS_HDAPS is not set CONFIG_SENSORS_HIH6130=m CONFIG_SENSORS_I5500=m @@ -4760,10 +6537,14 @@ CONFIG_SENSORS_NCT7802=m CONFIG_SENSORS_NCT7904=m CONFIG_SENSORS_NPCM7XX=m CONFIG_SENSORS_NTC_THERMISTOR=m +# CONFIG_SENSORS_OCC_P8_I2C is not set +# CONFIG_SENSORS_OCC_P9_SBE is not set CONFIG_SENSORS_PC87360=m CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_PCF8591=m CONFIG_SENSORS_POWR1220=m +CONFIG_SENSORS_PWM_FAN=m +CONFIG_SENSORS_RASPBERRYPI_HWMON=m # CONFIG_SENSORS_SBTSI is not set CONFIG_SENSORS_SCH5627=m CONFIG_SENSORS_SCH5636=m @@ -4773,10 +6554,12 @@ CONFIG_SENSORS_SHT21=m CONFIG_SENSORS_SHT3x=m CONFIG_SENSORS_SHTC1=m CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SL28CPLD=m CONFIG_SENSORS_SMM665=m CONFIG_SENSORS_SMSC47B397=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_SPARX5=m CONFIG_SENSORS_STTS751=m CONFIG_SENSORS_TC654=m CONFIG_SENSORS_TC74=m @@ -4788,6 +6571,7 @@ CONFIG_SENSORS_TMP401=m CONFIG_SENSORS_TMP421=m CONFIG_SENSORS_TMP513=m CONFIG_SENSORS_TSL2550=m +CONFIG_SENSORS_VEXPRESS=m CONFIG_SENSORS_VIA686A=m CONFIG_SENSORS_VIA_CPUTEMP=m CONFIG_SENSORS_VT1211=m @@ -4807,6 +6591,8 @@ CONFIG_SENSORS_WM831X=m CONFIG_SENSORS_XGENE=m CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_16550A_VARIANTS=y +CONFIG_SERIAL_8250_ASPEED_VUART=m +# CONFIG_SERIAL_8250_BCM2835AUX is not set CONFIG_SERIAL_8250_CONSOLE=y # CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set # CONFIG_SERIAL_8250_DETECT_IRQ is not set @@ -4816,40 +6602,66 @@ CONFIG_SERIAL_8250_DWLIB=y CONFIG_SERIAL_8250_EXAR=m CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_FINTEK=y +CONFIG_SERIAL_8250_FSL=y CONFIG_SERIAL_8250_LPSS=m CONFIG_SERIAL_8250_MANY_PORTS=y CONFIG_SERIAL_8250_MEN_MCB=m CONFIG_SERIAL_8250_MID=m +CONFIG_SERIAL_8250_MT6577=y CONFIG_SERIAL_8250_NR_UARTS=48 +CONFIG_SERIAL_8250_OMAP=m CONFIG_SERIAL_8250_PCI=y CONFIG_SERIAL_8250_PNP=y CONFIG_SERIAL_8250_RSA=y CONFIG_SERIAL_8250_RT288X=y CONFIG_SERIAL_8250_RUNTIME_UARTS=32 CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_TEGRA=y CONFIG_SERIAL_ALTERA_JTAGUART=m CONFIG_SERIAL_ALTERA_UART=m CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200 CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4 +CONFIG_SERIAL_AMBA_PL010=m +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y CONFIG_SERIAL_ARC=m CONFIG_SERIAL_ARC_NR_PORTS=1 # CONFIG_SERIAL_BCM63XX is not set +CONFIG_SERIAL_CONEXANT_DIGICOLOR=m CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y # CONFIG_SERIAL_DEV_BUS is not set CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST=y CONFIG_SERIAL_FSL_LINFLEXUART=m CONFIG_SERIAL_FSL_LPUART=m # CONFIG_SERIAL_IFX6X60 is not set +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +# CONFIG_SERIAL_IMX_EARLYCON is not set # CONFIG_SERIAL_IPOCTAL is not set CONFIG_SERIAL_JSM=m CONFIG_SERIAL_KGDB_NMI=y CONFIG_SERIAL_LANTIQ=m +CONFIG_SERIAL_LITEUART=m +CONFIG_SERIAL_LITEUART_MAX_PORTS=1 CONFIG_SERIAL_MAX3100=m CONFIG_SERIAL_MAX310X=y CONFIG_SERIAL_MCTRL_GPIO=y CONFIG_SERIAL_MEN_Z135=m +CONFIG_SERIAL_MESON=y +CONFIG_SERIAL_MESON_CONSOLE=y +CONFIG_SERIAL_MSM=y +CONFIG_SERIAL_MSM_CONSOLE=y +CONFIG_SERIAL_MVEBU_CONSOLE=y +CONFIG_SERIAL_MVEBU_UART=y CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SERIAL_OWL=y +CONFIG_SERIAL_OWL_CONSOLE=y +CONFIG_SERIAL_QCOM_GENI=m +CONFIG_SERIAL_QCOM_GENI_CONSOLE=y +CONFIG_SERIAL_QE=m CONFIG_SERIAL_RP2=m CONFIG_SERIAL_RP2_NR_UARTS=32 CONFIG_SERIAL_SC16IS7XX=m @@ -4858,21 +6670,34 @@ CONFIG_SERIAL_SC16IS7XX_I2C=y CONFIG_SERIAL_SC16IS7XX_SPI=y CONFIG_SERIAL_SCCNXP=y CONFIG_SERIAL_SCCNXP_CONSOLE=y +CONFIG_SERIAL_SH_SCI=m +CONFIG_SERIAL_SH_SCI_DMA=y +CONFIG_SERIAL_SH_SCI_NR_UARTS=2 +CONFIG_SERIAL_SIFIVE=m CONFIG_SERIAL_SPRD=m +CONFIG_SERIAL_TEGRA=m +CONFIG_SERIAL_TEGRA_TCU=y +CONFIG_SERIAL_TEGRA_TCU_CONSOLE=y CONFIG_SERIAL_UARTLITE=m CONFIG_SERIAL_UARTLITE_NR_UARTS=1 +CONFIG_SERIAL_XILINX_PS_UART=m CONFIG_SERIO=y CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_AMBAKMI=m +CONFIG_SERIO_APBPS2=m CONFIG_SERIO_ARC_PS2=m CONFIG_SERIO_CT82C710=m CONFIG_SERIO_GPIO_PS2=m CONFIG_SERIO_I8042=y CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_NVEC_PS2=m CONFIG_SERIO_PARKBD=m CONFIG_SERIO_PCIPS2=m CONFIG_SERIO_PS2MULT=m CONFIG_SERIO_RAW=m CONFIG_SERIO_SERPORT=m +# CONFIG_SERIO_SUN4I_PS2 is not set +CONFIG_SETEND_EMULATION=y CONFIG_SFC=m CONFIG_SFC_FALCON=m CONFIG_SFC_MCDI_LOGGING=y @@ -4885,13 +6710,17 @@ CONFIG_SGETMASK_SYSCALL=y CONFIG_SGI_PARTITION=y CONFIG_SGL_ALLOC=y CONFIG_SG_POOL=y +CONFIG_SG_SPLIT=y CONFIG_SHIFT_FS=m CONFIG_SHIFT_FS_POSIX_ACL=y CONFIG_SHMEM=y CONFIG_SHUFFLE_PAGE_ALLOCATOR=y +CONFIG_SH_TIMER_CMT=y +CONFIG_SH_TIMER_TMU=y CONFIG_SIGNALFD=y CONFIG_SIGNATURE=y CONFIG_SIGNED_PE_FILE_VERIFICATION=y +CONFIG_SIMPLE_PM_BUS=y CONFIG_SIOX=m CONFIG_SIOX_BUS_GPIO=m CONFIG_SKB_EXTENSIONS=y @@ -4901,12 +6730,14 @@ CONFIG_SKGE=m CONFIG_SKGE_GENESIS=y CONFIG_SKY2=m # CONFIG_SKY2_DEBUG is not set +CONFIG_SL28CPLD_WATCHDOG=m # CONFIG_SLAB is not set CONFIG_SLAB_FREELIST_HARDENED=y CONFIG_SLAB_FREELIST_RANDOM=y CONFIG_SLAB_MERGE_DEFAULT=y CONFIG_SLHC=y CONFIG_SLICOSS=m +CONFIG_SLIC_DS26522=m CONFIG_SLIMBUS=m CONFIG_SLIM_QCOM_CTRL=m CONFIG_SLIP=m @@ -4926,8 +6757,24 @@ CONFIG_SMP=y CONFIG_SMSC37B787_WDT=m # CONFIG_SMSC_PHY is not set CONFIG_SMSC_SCH311X_WDT=m +CONFIG_SM_DISPCC_8250=m +CONFIG_SM_GCC_8150=m +CONFIG_SM_GCC_8250=m +CONFIG_SM_GPUCC_8150=m +CONFIG_SM_GPUCC_8250=m +CONFIG_SM_VIDEOCC_8150=m +CONFIG_SM_VIDEOCC_8250=m +CONFIG_SOCIONEXT_SYNQUACER_PREITS=y CONFIG_SOCK_CGROUP_DATA=y CONFIG_SOCK_VALIDATE_XMIT=y +CONFIG_SOC_BRCMSTB=y +CONFIG_SOC_BUS=y +CONFIG_SOC_IMX8M=y +CONFIG_SOC_RENESAS=y +CONFIG_SOC_TEGRA_FLOWCTRL=y +CONFIG_SOC_TEGRA_FUSE=y +CONFIG_SOC_TEGRA_PMC=y +CONFIG_SOC_TEGRA_POWERGATE_BPMP=y CONFIG_SOC_TI=y CONFIG_SOFTLOCKUP_DETECTOR=y CONFIG_SOFT_WATCHDOG=m @@ -4946,41 +6793,88 @@ CONFIG_SPARSE_IRQ=y CONFIG_SPI=y CONFIG_SPI_ALTERA=m CONFIG_SPI_AMD=m +CONFIG_SPI_ARMADA_3700=m CONFIG_SPI_AXI_SPI_ENGINE=m +CONFIG_SPI_BCM2835=m +CONFIG_SPI_BCM2835AUX=m +CONFIG_SPI_BCM_QSPI=m CONFIG_SPI_BITBANG=m CONFIG_SPI_BUTTERFLY=m CONFIG_SPI_CADENCE=m +CONFIG_SPI_CADENCE_QUADSPI=m # CONFIG_SPI_DEBUG is not set CONFIG_SPI_DESIGNWARE=m CONFIG_SPI_DW_DMA=y CONFIG_SPI_DW_MMIO=m CONFIG_SPI_DW_PCI=m CONFIG_SPI_DYNAMIC=y +CONFIG_SPI_FSI=m +CONFIG_SPI_FSL_DSPI=m +CONFIG_SPI_FSL_LIB=y +CONFIG_SPI_FSL_LPSPI=m +CONFIG_SPI_FSL_QUADSPI=m +CONFIG_SPI_FSL_SPI=y CONFIG_SPI_GPIO=m +CONFIG_SPI_HISI_SFC_V3XX=m +CONFIG_SPI_IMX=m # CONFIG_SPI_LANTIQ_SSC is not set CONFIG_SPI_LM70_LLP=m CONFIG_SPI_LOOPBACK_TEST=m CONFIG_SPI_MASTER=y CONFIG_SPI_MEM=y +CONFIG_SPI_MESON_SPICC=m +CONFIG_SPI_MESON_SPIFC=m +CONFIG_SPI_MT65XX=m +CONFIG_SPI_MTK_NOR=m CONFIG_SPI_MUX=m CONFIG_SPI_MXIC=m CONFIG_SPI_NXP_FLEXSPI=m CONFIG_SPI_OC_TINY=m +CONFIG_SPI_OMAP24XX=y +CONFIG_SPI_ORION=m +CONFIG_SPI_PL022=m CONFIG_SPI_PXA2XX=m CONFIG_SPI_PXA2XX_PCI=m +CONFIG_SPI_QCOM_GENI=m +CONFIG_SPI_QCOM_QSPI=m +CONFIG_SPI_QUP=m # CONFIG_SPI_ROCKCHIP is not set +CONFIG_SPI_RPCIF=m +CONFIG_SPI_RSPI=m CONFIG_SPI_SC18IS602=m +CONFIG_SPI_SH_HSPI=m +CONFIG_SPI_SH_MSIOF=m CONFIG_SPI_SIFIVE=m CONFIG_SPI_SLAVE=y +CONFIG_SPI_SLAVE_MT27XX=m CONFIG_SPI_SLAVE_SYSTEM_CONTROL=m CONFIG_SPI_SLAVE_TIME=m CONFIG_SPI_SPIDEV=m +CONFIG_SPI_SPRD=m +CONFIG_SPI_SPRD_ADI=m +# CONFIG_SPI_SUN4I is not set +CONFIG_SPI_SUN6I=m +CONFIG_SPI_SYNQUACER=m +CONFIG_SPI_TEGRA114=m +CONFIG_SPI_TEGRA20_SFLASH=m +CONFIG_SPI_TEGRA20_SLINK=m +CONFIG_SPI_THUNDERX=m CONFIG_SPI_TLE62X0=m CONFIG_SPI_XCOMM=m # CONFIG_SPI_XILINX is not set +CONFIG_SPI_XLP=m CONFIG_SPI_ZYNQMP_GQSPI=m CONFIG_SPLIT_PTLOCK_CPUS=4 # CONFIG_SPMI is not set +CONFIG_SPRD_COMMON_CLK=m +CONFIG_SPRD_DMA=m +CONFIG_SPRD_EFUSE=m +CONFIG_SPRD_MBOX=m +CONFIG_SPRD_SC9860_CLK=m +CONFIG_SPRD_SC9863A_CLK=m +CONFIG_SPRD_THERMAL=m +CONFIG_SPRD_TIMER=y +CONFIG_SPRD_WATCHDOG=m CONFIG_SQUASHFS=y # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set # CONFIG_SQUASHFS_DECOMP_MULTI is not set @@ -5007,6 +6901,7 @@ CONFIG_SSB_PCIHOST_POSSIBLE=y CONFIG_SSB_POSSIBLE=y CONFIG_SSB_SPROM=y CONFIG_STACKPROTECTOR=y +CONFIG_STACKPROTECTOR_PER_TASK=y CONFIG_STACKPROTECTOR_STRONG=y CONFIG_STACKTRACE=y CONFIG_STACKTRACE_SUPPORT=y @@ -5014,6 +6909,7 @@ CONFIG_STACK_TRACER=y CONFIG_STACK_VALIDATION=y CONFIG_STAGING=y CONFIG_STAGING_APEX_DRIVER=m +# CONFIG_STAGING_BOARD is not set CONFIG_STAGING_GASKET_FRAMEWORK=m CONFIG_STAGING_MEDIA=y # CONFIG_STANDALONE is not set @@ -5022,6 +6918,8 @@ CONFIG_STAGING_MEDIA=y # CONFIG_STATIC_USERMODEHELPER is not set # CONFIG_STE10XP is not set # CONFIG_STM is not set +CONFIG_STMPE_SPI=y +CONFIG_STMP_DEVICE=y CONFIG_STP=m CONFIG_STREAM_PARSER=y CONFIG_STRICT_DEVMEM=y @@ -5029,6 +6927,23 @@ CONFIG_STRICT_KERNEL_RWX=y CONFIG_STRICT_MODULE_RWX=y # CONFIG_STRING_SELFTEST is not set # CONFIG_STRIP_ASM_SYMS is not set +CONFIG_STUB_CLK_HI3660=y +CONFIG_STUB_CLK_HI6220=y +# CONFIG_SUN4I_EMAC is not set +CONFIG_SUN50I_A100_CCU=y +CONFIG_SUN50I_A100_R_CCU=y +CONFIG_SUN50I_A64_CCU=y +CONFIG_SUN50I_DE2_BUS=y +CONFIG_SUN50I_ERRATUM_UNKNOWN1=y +CONFIG_SUN50I_H6_CCU=y +CONFIG_SUN50I_H6_R_CCU=y +CONFIG_SUN50I_IOMMU=y +CONFIG_SUN6I_MSGBOX=y +CONFIG_SUN8I_A83T_CCU=y +CONFIG_SUN8I_DE2_CCU=y +CONFIG_SUN8I_H3_CCU=y +CONFIG_SUN8I_R_CCU=y +CONFIG_SUN8I_THERMAL=m CONFIG_SUNDANCE=m # CONFIG_SUNDANCE_MMIO is not set CONFIG_SUNRPC=m @@ -5038,6 +6953,11 @@ CONFIG_SUNRPC_DEBUG=y CONFIG_SUNRPC_GSS=m CONFIG_SUNRPC_SWAP=y CONFIG_SUNRPC_XPRT_RDMA=m +CONFIG_SUNXI_CCU=y +CONFIG_SUNXI_MBUS=y +CONFIG_SUNXI_RSB=m +CONFIG_SUNXI_SRAM=y +CONFIG_SUNXI_WATCHDOG=m CONFIG_SUN_PARTITION=y # CONFIG_SURFACE_PLATFORMS is not set CONFIG_SUSPEND=y @@ -5046,6 +6966,7 @@ CONFIG_SUSPEND_FREEZER=y CONFIG_SWAP=y CONFIG_SWIOTLB=y CONFIG_SWPHY=y +CONFIG_SWP_EMULATION=y CONFIG_SW_SYNC=y CONFIG_SYMBOLIC_ERRNAME=y CONFIG_SYNCLINK_GT=m @@ -5053,8 +6974,23 @@ CONFIG_SYNC_FILE=y CONFIG_SYNTH_EVENTS=y # CONFIG_SYNTH_EVENT_GEN_TEST is not set CONFIG_SYN_COOKIES=y +CONFIG_SYSCON_REBOOT_MODE=m CONFIG_SYSCTL=y CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_SYSC_R8A774A1=y +CONFIG_SYSC_R8A774B1=y +CONFIG_SYSC_R8A774C0=y +CONFIG_SYSC_R8A774E1=y +CONFIG_SYSC_R8A7795=y +CONFIG_SYSC_R8A77960=y +CONFIG_SYSC_R8A77961=y +CONFIG_SYSC_R8A77965=y +CONFIG_SYSC_R8A77970=y +CONFIG_SYSC_R8A77980=y +CONFIG_SYSC_R8A77990=y +CONFIG_SYSC_R8A77995=y +CONFIG_SYSC_R8A779A0=y +CONFIG_SYSC_RCAR=y CONFIG_SYSFS=y # CONFIG_SYSFS_DEPRECATED is not set CONFIG_SYSFS_SYSCALL=y @@ -5074,6 +7010,9 @@ CONFIG_SYSVIPC=y CONFIG_SYSVIPC_COMPAT=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_SYSV_FS=m +CONFIG_SYS_SUPPORTS_HUGETLBFS=y +CONFIG_SYS_SUPPORTS_SH_CMT=y +CONFIG_SYS_SUPPORTS_SH_TMU=y # CONFIG_TABLET_SERIAL_WACOM4 is not set # CONFIG_TABLET_USB_ACECAD is not set # CONFIG_TABLET_USB_AIPTEK is not set @@ -5092,6 +7031,7 @@ CONFIG_TASK_IO_ACCOUNTING=y CONFIG_TASK_XACCT=y # CONFIG_TCG_ATMEL is not set CONFIG_TCG_CRB=y +CONFIG_TCG_FTPM_TEE=m # CONFIG_TCG_INFINEON is not set # CONFIG_TCG_NSC is not set CONFIG_TCG_TIS=y @@ -5102,6 +7042,7 @@ CONFIG_TCG_TIS_CORE=y # CONFIG_TCG_TIS_SPI is not set # CONFIG_TCG_TIS_ST33ZP24_I2C is not set # CONFIG_TCG_TIS_ST33ZP24_SPI is not set +CONFIG_TCG_TIS_SYNQUACER=m CONFIG_TCG_TPM=y # CONFIG_TCG_VTPM_PROXY is not set CONFIG_TCM_FILEIO=m @@ -5127,6 +7068,27 @@ CONFIG_TCP_CONG_WESTWOOD=m CONFIG_TCP_CONG_YEAH=m CONFIG_TCP_MD5SIG=y CONFIG_TEE=m +CONFIG_TEE_BNXT_FW=m +CONFIG_TEGRA20_APB_DMA=y +CONFIG_TEGRA210_ADMA=m +CONFIG_TEGRA210_EMC=m +CONFIG_TEGRA210_EMC_TABLE=y +CONFIG_TEGRA_ACONNECT=m +CONFIG_TEGRA_AHB=y +CONFIG_TEGRA_BPMP=y +CONFIG_TEGRA_BPMP_THERMAL=m +CONFIG_TEGRA_CLK_DFLL=y +CONFIG_TEGRA_GMI=m +CONFIG_TEGRA_HOST1X=m +CONFIG_TEGRA_HOST1X_FIREWALL=y +CONFIG_TEGRA_HSP_MBOX=y +CONFIG_TEGRA_IOMMU_SMMU=y +CONFIG_TEGRA_IVC=y +CONFIG_TEGRA_MC=y +# CONFIG_TEGRA_SOCTHERM is not set +CONFIG_TEGRA_TIMER=y +CONFIG_TEGRA_VDE=m +CONFIG_TEGRA_WATCHDOG=m CONFIG_TELCLOCK=m # CONFIG_TERANETICS_PHY is not set # CONFIG_TEST_ASYNC_DRIVER_PROBE is not set @@ -5149,17 +7111,24 @@ CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y CONFIG_THERMAL_GOV_STEP_WISE=y CONFIG_THERMAL_GOV_USER_SPACE=y CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_MMIO=m CONFIG_THERMAL_NETLINK=y +CONFIG_THERMAL_OF=y CONFIG_THERMAL_STATISTICS=y CONFIG_THERMAL_WRITABLE_TRIPS=y CONFIG_THP_SWAP=y CONFIG_THREAD_INFO_IN_TASK=y +CONFIG_THUNDERX2_PMU=m CONFIG_TICK_ONESHOT=y CONFIG_TIFM_7XX1=m CONFIG_TIFM_CORE=m CONFIG_TIGON3=m CONFIG_TIGON3_HWMON=y CONFIG_TIMERFD=y +CONFIG_TIMER_ACPI=y +CONFIG_TIMER_IMX_SYS_CTR=y +CONFIG_TIMER_OF=y +CONFIG_TIMER_PROBE=y CONFIG_TIME_NS=y CONFIG_TINYDRM_HX8357D=m CONFIG_TINYDRM_ILI9225=m @@ -5174,7 +7143,23 @@ CONFIG_TIPC_CRYPTO=y CONFIG_TIPC_DIAG=m # CONFIG_TIPC_MEDIA_IB is not set CONFIG_TIPC_MEDIA_UDP=y +CONFIG_TI_K3_PSIL=y +CONFIG_TI_K3_RINGACC=y +CONFIG_TI_K3_SOCINFO=y +CONFIG_TI_K3_UDMA=y +CONFIG_TI_K3_UDMA_GLUE_LAYER=y +CONFIG_TI_MESSAGE_MANAGER=y +CONFIG_TI_PRUSS=m +CONFIG_TI_PRUSS_INTC=m +CONFIG_TI_SCI_CLK=m +# CONFIG_TI_SCI_CLK_PROBE_FROM_FW is not set +CONFIG_TI_SCI_INTA_IRQCHIP=y +CONFIG_TI_SCI_INTA_MSI_DOMAIN=y +CONFIG_TI_SCI_INTR_IRQCHIP=y +CONFIG_TI_SCI_PM_DOMAINS=m +CONFIG_TI_SCI_PROTOCOL=y # CONFIG_TI_ST is not set +CONFIG_TI_SYSCON_CLK=y CONFIG_TLS=m CONFIG_TLS_DEVICE=y # CONFIG_TLS_TOE is not set @@ -5218,10 +7203,14 @@ CONFIG_TTY_PRINTK=y CONFIG_TTY_PRINTK_LEVEL=6 CONFIG_TUN=y # CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_TURRIS_MOX_RWTM=m # CONFIG_TYPEC is not set CONFIG_UACCE=m # CONFIG_UBSAN is not set CONFIG_UBUNTU_HOST=m +CONFIG_UCC=y +CONFIG_UCC_FAST=y +CONFIG_UCC_SLOW=y CONFIG_UCLAMP_BUCKETS_COUNT=5 CONFIG_UCLAMP_TASK=y CONFIG_UCLAMP_TASK_GROUP=y @@ -5229,6 +7218,7 @@ CONFIG_UCS2_STRING=y CONFIG_UDF_FS=m CONFIG_UDMABUF=y CONFIG_UEFI_CPER=y +CONFIG_UEFI_CPER_ARM=y CONFIG_UEFI_CPER_X86=y CONFIG_UEVENT_HELPER=y CONFIG_UEVENT_HELPER_PATH="" @@ -5258,6 +7248,7 @@ CONFIG_UNIX98_PTYS=y CONFIG_UNIXWARE_DISKLABEL=y CONFIG_UNIX_DIAG=m CONFIG_UNIX_SCM=y +CONFIG_UNMAP_KERNEL_AT_EL0=y CONFIG_UNUSED_SYMBOLS=y CONFIG_UNWINDER_FRAME_POINTER=y # CONFIG_UNWINDER_GUESS is not set @@ -5278,11 +7269,11 @@ CONFIG_USB_ACM=m CONFIG_USB_ARCH_HAS_HCD=y # CONFIG_USB_ATM is not set CONFIG_USB_AUTOSUSPEND_DELAY=2 +CONFIG_USB_BRCMSTB=m # CONFIG_USB_C67X00_HCD is not set # CONFIG_USB_CDNS3 is not set # CONFIG_USB_CHAOSKEY is not set CONFIG_USB_COMMON=y -# CONFIG_USB_CONN_GPIO is not set # CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYTHERM is not set # CONFIG_USB_DEFAULT_PERSIST is not set @@ -5325,7 +7316,11 @@ CONFIG_USB_COMMON=y # CONFIG_USB_MICROTEK is not set # CONFIG_USB_MON is not set # CONFIG_USB_MOUSE is not set +CONFIG_USB_MTU3=m +# CONFIG_USB_MTU3_DEBUG is not set +CONFIG_USB_MTU3_HOST=y # CONFIG_USB_MUSB_HDRC is not set +CONFIG_USB_MXS_PHY=y # CONFIG_USB_NET_DRIVERS is not set # CONFIG_USB_OHCI_HCD is not set CONFIG_USB_OHCI_LITTLE_ENDIAN=y @@ -5334,28 +7329,36 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y # CONFIG_USB_OTG_PRODUCTLIST is not set # CONFIG_USB_OXU210HP_HCD is not set CONFIG_USB_PCI=y +CONFIG_USB_PHY=y # CONFIG_USB_PRINTER is not set CONFIG_USB_PULSE8_CEC=m # CONFIG_USB_R8A66597_HCD is not set CONFIG_USB_RAINSHADOW_CEC=m -# CONFIG_USB_ROLE_SWITCH is not set # CONFIG_USB_SERIAL is not set # CONFIG_USB_SEVSEG is not set # CONFIG_USB_SL811_HCD is not set # CONFIG_USB_STORAGE is not set CONFIG_USB_SUPPORT=y +CONFIG_USB_TEGRA_PHY=m # CONFIG_USB_TEST is not set # CONFIG_USB_TMC is not set # CONFIG_USB_TRANCEVIBRATOR is not set # CONFIG_USB_UHCI_HCD is not set +CONFIG_USB_ULPI=y # CONFIG_USB_ULPI_BUS is not set +CONFIG_USB_ULPI_VIEWPORT=y # CONFIG_USB_USS720 is not set # CONFIG_USB_WDM is not set CONFIG_USB_XHCI_DBGCAP=y CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_HISTB=m +CONFIG_USB_XHCI_MTK=m +CONFIG_USB_XHCI_MVEBU=m CONFIG_USB_XHCI_PCI=y # CONFIG_USB_XHCI_PCI_RENESAS is not set CONFIG_USB_XHCI_PLATFORM=m +CONFIG_USB_XHCI_RCAR=m +CONFIG_USB_XHCI_TEGRA=m # CONFIG_USB_YUREX is not set CONFIG_USELIB=y CONFIG_USERFAULTFD=y @@ -5367,6 +7370,8 @@ CONFIG_USER_STACKTRACE_SUPPORT=y CONFIG_USE_PERCPU_NUMA_NODE_ID=y CONFIG_UTS_NS=y CONFIG_V4L2_FWNODE=m +CONFIG_V4L2_H264=m +CONFIG_V4L2_JPEG_HELPER=m CONFIG_V4L2_MEM2MEM_DEV=m CONFIG_V4L_MEM2MEM_DRIVERS=y CONFIG_V4L_PLATFORM_DRIVERS=y @@ -5376,18 +7381,21 @@ CONFIG_VALIDATE_FS_PARSER=y CONFIG_VDPA=m CONFIG_VERSION_SIGNATURE="" CONFIG_VETH=m +CONFIG_VEXPRESS_CONFIG=y CONFIG_VFAT_FS=y -CONFIG_VFIO=y -CONFIG_VFIO_IOMMU_TYPE1=y +CONFIG_VFIO_AMBA=m +CONFIG_VFIO_FSL_MC=m CONFIG_VFIO_MDEV=m CONFIG_VFIO_MDEV_DEVICE=m CONFIG_VFIO_NOIOMMU=y -CONFIG_VFIO_PCI=y CONFIG_VFIO_PCI_IGD=y CONFIG_VFIO_PCI_INTX=y CONFIG_VFIO_PCI_MMAP=y CONFIG_VFIO_PCI_VGA=y -CONFIG_VFIO_VIRQFD=y +CONFIG_VFIO_PLATFORM=m +CONFIG_VFIO_PLATFORM_AMDXGBE_RESET=m +CONFIG_VFIO_PLATFORM_BCMFLEXRM_RESET=m +CONFIG_VFIO_PLATFORM_CALXEDAXGMAC_RESET=m CONFIG_VGA_ARB=y CONFIG_VGA_ARB_MAX_GPUS=16 CONFIG_VGA_CONSOLE=y @@ -5410,6 +7418,7 @@ CONFIG_VIDEOBUF2_V4L2=m CONFIG_VIDEOBUF2_VMALLOC=m CONFIG_VIDEOBUF_GEN=m CONFIG_VIDEOBUF_VMALLOC=m +CONFIG_VIDEOMODE_HELPERS=y CONFIG_VIDEO_AD9389B=m CONFIG_VIDEO_ADV7170=m CONFIG_VIDEO_ADV7175=m @@ -5417,6 +7426,7 @@ CONFIG_VIDEO_ADV7180=m CONFIG_VIDEO_ADV7183=m CONFIG_VIDEO_ADV7343=m CONFIG_VIDEO_ADV7393=m +CONFIG_VIDEO_ADV748X=m CONFIG_VIDEO_ADV7511=m CONFIG_VIDEO_ADV7511_CEC=y CONFIG_VIDEO_ADV7604=m @@ -5425,6 +7435,7 @@ CONFIG_VIDEO_ADV7842=m CONFIG_VIDEO_ADV7842_CEC=y # CONFIG_VIDEO_ADV_DEBUG is not set CONFIG_VIDEO_AK881X=m +CONFIG_VIDEO_ALLEGRO_DVT=m CONFIG_VIDEO_ASPEED=m CONFIG_VIDEO_ATOMISP=m CONFIG_VIDEO_ATOMISP_GC0310=m @@ -5436,6 +7447,7 @@ CONFIG_VIDEO_ATOMISP_MT9M114=m CONFIG_VIDEO_ATOMISP_OV2680=m CONFIG_VIDEO_ATOMISP_OV2722=m CONFIG_VIDEO_ATOMISP_OV5693=m +CONFIG_VIDEO_BCM2835=m CONFIG_VIDEO_BT819=m CONFIG_VIDEO_BT856=m CONFIG_VIDEO_BT866=m @@ -5443,6 +7455,7 @@ CONFIG_VIDEO_CADENCE=y CONFIG_VIDEO_CADENCE_CSI2RX=m CONFIG_VIDEO_CADENCE_CSI2TX=m CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_VIDEO_CODA=m CONFIG_VIDEO_CS3308=m CONFIG_VIDEO_CS5345=m CONFIG_VIDEO_CS53L32A=m @@ -5450,15 +7463,35 @@ CONFIG_VIDEO_CX25840=m CONFIG_VIDEO_DEV=m # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set CONFIG_VIDEO_GS1662=m +CONFIG_VIDEO_HANTRO=m +CONFIG_VIDEO_HANTRO_IMX8M=y +CONFIG_VIDEO_HANTRO_ROCKCHIP=y CONFIG_VIDEO_I2C=m +CONFIG_VIDEO_IMX_PXP=m CONFIG_VIDEO_IPU3_IMGU=m CONFIG_VIDEO_IR_I2C=m CONFIG_VIDEO_KS0127=m CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_MAX9286=m +CONFIG_VIDEO_MEDIATEK_VPU=m CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m +CONFIG_VIDEO_MESON_GE2D=m +CONFIG_VIDEO_MESON_VDEC=m CONFIG_VIDEO_ML86V7667=m CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_MUX=m CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_QCOM_CAMSS=m +CONFIG_VIDEO_QCOM_VENUS=m +CONFIG_VIDEO_RCAR_CSI2=m +CONFIG_VIDEO_RCAR_VIN=m +CONFIG_VIDEO_RENESAS_FCP=m +CONFIG_VIDEO_RENESAS_FDP1=m +CONFIG_VIDEO_RENESAS_JPU=m +CONFIG_VIDEO_RENESAS_VSP1=m +CONFIG_VIDEO_ROCKCHIP_ISP1=m +CONFIG_VIDEO_ROCKCHIP_RGA=m +CONFIG_VIDEO_ROCKCHIP_VDEC=m CONFIG_VIDEO_SAA6588=m CONFIG_VIDEO_SAA6752HS=m CONFIG_VIDEO_SAA7110=m @@ -5468,14 +7501,23 @@ CONFIG_VIDEO_SAA717X=m CONFIG_VIDEO_SAA7185=m CONFIG_VIDEO_SONY_BTF_MPX=m CONFIG_VIDEO_ST_MIPID02=m +CONFIG_VIDEO_SUN4I_CSI=m +CONFIG_VIDEO_SUN6I_CSI=m +CONFIG_VIDEO_SUN8I_DEINTERLACE=m +CONFIG_VIDEO_SUN8I_ROTATE=m +CONFIG_VIDEO_SUNXI=y +CONFIG_VIDEO_SUNXI_CEDRUS=m CONFIG_VIDEO_TC358743=m CONFIG_VIDEO_TC358743_CEC=y CONFIG_VIDEO_TDA7432=m CONFIG_VIDEO_TDA9840=m CONFIG_VIDEO_TEA6415C=m CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_TEGRA=m +CONFIG_VIDEO_TEGRA_TPG=y CONFIG_VIDEO_THS7303=m CONFIG_VIDEO_THS8200=m +CONFIG_VIDEO_TI_CAL=m CONFIG_VIDEO_TLV320AIC23B=m CONFIG_VIDEO_TVAUDIO=m CONFIG_VIDEO_TVP514X=m @@ -5503,6 +7545,10 @@ CONFIG_VIDEO_VP27SMPX=m CONFIG_VIDEO_VPX3220=m CONFIG_VIDEO_WM8739=m CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_XILINX=m +CONFIG_VIDEO_XILINX_CSI2RXSS=m +CONFIG_VIDEO_XILINX_TPG=m +CONFIG_VIDEO_XILINX_VTC=m # CONFIG_VIDEO_ZORAN is not set CONFIG_VIRTIO=y CONFIG_VIRTIO_BALLOON=y @@ -5511,6 +7557,7 @@ CONFIG_VIRTIO_CONSOLE=y CONFIG_VIRTIO_DMA_SHARED_BUFFER=m CONFIG_VIRTIO_FS=m CONFIG_VIRTIO_INPUT=m +CONFIG_VIRTIO_IOMMU=y CONFIG_VIRTIO_MEM=m CONFIG_VIRTIO_MENU=y CONFIG_VIRTIO_MMIO=y @@ -5527,6 +7574,7 @@ CONFIG_VIRT_CPU_ACCOUNTING=y CONFIG_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_VIRT_DRIVERS=y CONFIG_VIRT_TO_BUS=y +CONFIG_VISCONTI_WATCHDOG=m CONFIG_VITESSE_PHY=m CONFIG_VLAN_8021Q=m CONFIG_VLAN_8021Q_GVRP=y @@ -5564,6 +7612,7 @@ CONFIG_W83977F_WDT=m CONFIG_WAFER_WDT=m CONFIG_WAN=y CONFIG_WANT_COMPAT_NETLINK_MESSAGES=y +CONFIG_WANT_DEV_COREDUMP=y CONFIG_WANXL=m # CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set CONFIG_WATCHDOG=y @@ -5698,14 +7747,21 @@ CONFIG_XFS_QUOTA=y CONFIG_XFS_RT=y CONFIG_XFS_SUPPORT_V4=y # CONFIG_XFS_WARN is not set +CONFIG_XGENE_DMA=m +CONFIG_XGENE_PMU=y +CONFIG_XGENE_SLIMPRO_MBOX=m CONFIG_XIAOMI_WMI=m CONFIG_XILINX_AXI_EMAC=m +CONFIG_XILINX_DMA=m # CONFIG_XILINX_GMII2RGMII is not set CONFIG_XILINX_LL_TEMAC=m CONFIG_XILINX_SDFEC=m CONFIG_XILINX_VCU=m CONFIG_XILINX_WATCHDOG=m +CONFIG_XILINX_ZYNQMP_DMA=m +# CONFIG_XILINX_ZYNQMP_DPDMA is not set # CONFIG_XILLYBUS is not set +CONFIG_XIL_AXIS_FIFO=m CONFIG_XOR_BLOCKS=m CONFIG_XPOWER_PMIC_OPREGION=y CONFIG_XPS=y @@ -5765,3 +7821,8 @@ CONFIG_ZSWAP_ZPOOL_DEFAULT="zbud" # CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD is not set CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y # CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC is not set +CONFIG_ZYNQMP_FIRMWARE=y +# CONFIG_ZYNQMP_FIRMWARE_DEBUG is not set +CONFIG_ZYNQMP_IPI_MBOX=y +CONFIG_ZYNQMP_PM_DOMAINS=y +CONFIG_ZYNQMP_POWER=y diff --git a/debian.azure/control.d/flavour-control.stub b/debian.azure/control.d/flavour-control.stub index 94b8db27dadf..426a08388f96 100644 --- a/debian.azure/control.d/flavour-control.stub +++ b/debian.azure/control.d/flavour-control.stub @@ -29,7 +29,7 @@ Priority: optional Provides: linux-image, fuse-module, =PROVIDES=${linux:rprovides} Depends: ${misc:Depends}, ${shlibs:Depends}, kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-base-sgx (>= 4.5ubuntu5.3), linux-modules-PKGVER-ABINUM-FLAVOUR Recommends: BOOTLOADER -Breaks: flash-kernel (<< 3.0~rc.4ubuntu64) [arm64] +Breaks: flash-kernel (<< 3.90ubuntu2) [arm64 armhf] Conflicts: linux-image=SIGN-PEER-PKG=-PKGVER-ABINUM-FLAVOUR Suggests: fdutils, SRCPKGNAME-doc-PKGVER | SRCPKGNAME-source-PKGVER, SRCPKGNAME-tools, linux-headers-PKGVER-ABINUM-FLAVOUR, initramfs-tools | linux-initramfs-tool Description: Linux kernel image for version PKGVER on DESC diff --git a/debian.azure/control.d/vars.azure b/debian.azure/control.d/vars.azure index 556cbf79c93f..5a228d82b7e6 100644 --- a/debian.azure/control.d/vars.azure +++ b/debian.azure/control.d/vars.azure @@ -1,6 +1,6 @@ -arch="amd64" +arch="amd64 arm64" supported="Azure" target="Geared toward Azure systems." desc="=HUMAN= SMP" -bootloader="grub-pc [amd64] | grub-efi-amd64 [amd64] | grub-efi-ia32 [amd64] | grub [amd64]" +bootloader="grub-pc [amd64] | grub-efi-amd64 [amd64] | grub-efi-ia32 [amd64] | grub [amd64] | flash-kernel [armhf arm64] | grub-efi-arm64 [arm64]" provides="kvm-api-4, redhat-cluster-modules, ivtv-modules, virtualbox-guest-modules [amd64]" diff --git a/debian.azure/control.stub.in b/debian.azure/control.stub.in index 23c756552e3a..c40de7f6261d 100644 --- a/debian.azure/control.stub.in +++ b/debian.azure/control.stub.in @@ -9,8 +9,8 @@ Build-Depends: kernel-wedge , dctrl-tools , kmod , - libcap-dev , makedumpfile [amd64] , + libcap-dev , libelf-dev , libnewt-dev , libiberty-dev , @@ -35,7 +35,8 @@ Build-Depends: libnuma-dev [amd64 arm64 ppc64el s390x] , dkms , curl , - dwarves, + lz4 [amd64 s390x] , + dwarves [amd64 arm64 armhf ppc64el s390x] , Build-Depends-Indep: xmlto , docbook-utils , @@ -65,7 +66,7 @@ Description: Header files related to Linux kernel version PKGVER Package: SRCPKGNAME-tools-PKGVER-ABINUM Build-Profiles: -Architecture: amd64 +Architecture: amd64 arm64 Section: devel Priority: optional Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common @@ -78,7 +79,7 @@ Description: Linux kernel version specific tools for version PKGVER-ABINUM Package: SRCPKGNAME-cloud-tools-PKGVER-ABINUM Build-Profiles: -Architecture: amd64 +Architecture: amd64 arm64 Section: devel Priority: optional Depends: ${misc:Depends}, ${shlibs:Depends}, linux-cloud-tools-common diff --git a/debian.azure/d-i/kernel-versions b/debian.azure/d-i/kernel-versions index d4fb3e8842c6..14f0fba2e785 100644 --- a/debian.azure/d-i/kernel-versions +++ b/debian.azure/d-i/kernel-versions @@ -1,2 +1,3 @@ # arch version flavour installedname suffix bdep amd64 - azure - - - +arm64 - azure - - - diff --git a/debian.azure/etc/getabis b/debian.azure/etc/getabis index 60cbe34f6484..3866cfc2b653 100644 --- a/debian.azure/etc/getabis +++ b/debian.azure/etc/getabis @@ -13,5 +13,6 @@ repo_list=( package_prefixes linux-image linux-modules linux-modules-extra getall amd64 azure +getall arm64 azure # Ports arches and flavours. diff --git a/debian.azure/etc/kernelconfig b/debian.azure/etc/kernelconfig index f948f6d566fe..2f07ffc6a95c 100644 --- a/debian.azure/etc/kernelconfig +++ b/debian.azure/etc/kernelconfig @@ -2,6 +2,6 @@ if [ "$variant" = "ports" ]; then archs="" family='ports' else - archs="amd64" + archs="amd64 arm64" family='ubuntu' fi diff --git a/debian.azure/rules.d/arm64.mk b/debian.azure/rules.d/arm64.mk new file mode 100644 index 000000000000..9d6d987220a9 --- /dev/null +++ b/debian.azure/rules.d/arm64.mk @@ -0,0 +1,28 @@ +human_arch = ARMv8 +build_arch = arm64 +header_arch = arm64 +defconfig = defconfig +flavours = azure +build_image = Image.gz +kernel_file = arch/$(build_arch)/boot/Image.gz +install_file = vmlinuz +no_dumpfile = true +uefi_signed = true +vdso = vdso_install +do_extras_package = true +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true +do_tools_x86 = false +do_tools_bpftool = true +do_tools_hyperv = true +do_extras_package = true +ship_extras_package = true +do_zfs = true +do_libc_dev_package = false +disable_d_i = true +do_doc_package = false +do_source_package = false +do_dtbs = false +do_common_headers_indep = false +do_tools_common = false From patchwork Thu Nov 4 12:54:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tim Gardner X-Patchwork-Id: 1550933 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical.com header.i=@canonical.com header.a=rsa-sha256 header.s=20210705 header.b=LJAYKMIm; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HlNvx2FJ3z9sPf for ; Thu, 4 Nov 2021 23:57:33 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1micJ1-0000xg-Ql; Thu, 04 Nov 2021 12:57:23 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1micHX-00051V-8h for kernel-team@lists.ubuntu.com; Thu, 04 Nov 2021 12:55:51 +0000 Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id BE58A3F1F5 for ; Thu, 4 Nov 2021 12:55:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1636030548; bh=KnFDewkd+NCqJGjPluVCsmG8iCLBsu6Q/8C/qXe7YGg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=LJAYKMIm5PtDVV1mZfqBJde8sT2Sjyz2sPk0R4yIag9b9Oxjo50CPzXoNFBE1Ujej RZmVa+EyeDb/w9xbHAi6qQC1dm1LRw1NF/93iArr+0vNDpHqO2u+CeWB3UQJdI2Y2A ZiMCfFe3FL0RMmXxQfkAQHB0+8aAY8FMaIVxQlZTuwWRMMHMSFKWCJeGlqt3UBzV74 pFY2Mm4yK3BCVrtrMhoKxsVbh8nd4IFoedTV+Qlz10K7JJ0sfPNuDjcXOiupx/Sf15 y2daBsBLbGWULkJBdmRsIXxi7wUN6ZosmxisPRFeBTti67ZXi4DmQWi0FIy1CpRdgi am7D47ROjY2hg== Received: by mail-pf1-f199.google.com with SMTP id t62-20020a625f41000000b004807e0ed462so3722804pfb.22 for ; Thu, 04 Nov 2021 05:55:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KnFDewkd+NCqJGjPluVCsmG8iCLBsu6Q/8C/qXe7YGg=; b=dLvniYrWk969MLJu0//jRWRv6mJNlnZ1YF75boJBnDEfOYgQWV+94iF0i20+e7rpeP JYa3UGS79/CQI9eqQcp7CN77g1S+c1tA7AGJ1y8XU+xW+DEwajC3fPBWZ3K46CQAA074 uJrqbD1v/UwRLdcpXOWQyuoddYroTvyKYrZ9SFF8eiqF7OHPOhbDbmPzLtz5zOWFmwGN OK34rYtAERQbOe8AqyPX5YRtlcqqGOgMPmBKwN1F7qcEiuqN9mvISc+8lbKLII4Vag8Y 5feH3J9fqrvC+9QMjmOeOGOed+pwO2Xx3zEmIO7yJ9gLg8+5sENA+6aaB6WjqhpvpvKx pG3g== X-Gm-Message-State: AOAM532ymIalQyDe4SK0TaH/vbTfcAUbGDtQ7WuOHu7Hp2k+w+Jj5JJZ 5X3a3tAupia5X1DnuwPRN7Fzh3wpgsJk922NLz86Ec4W4ndF6ibYvm7o8JQczfNKMaGSIRyGMYA coZQmycp0UMOfO+EziMA8l3rkcYHeNWhgwuRIVw9k4g== X-Received: by 2002:a17:902:db01:b0:141:ea12:2176 with SMTP id m1-20020a170902db0100b00141ea122176mr25424500plx.44.1636030546973; Thu, 04 Nov 2021 05:55:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzjaGybtrnMQCpHVCBxxWJp6mXL71SE/JQLkGy27MMlIsUK1uYozLwje4BzIvGi7J9bEB1TMg== X-Received: by 2002:a17:902:db01:b0:141:ea12:2176 with SMTP id m1-20020a170902db0100b00141ea122176mr25424487plx.44.1636030546715; Thu, 04 Nov 2021 05:55:46 -0700 (PDT) Received: from localhost.localdomain ([69.163.84.166]) by smtp.gmail.com with ESMTPSA id y4sm5283859pfi.178.2021.11.04.05.55.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Nov 2021 05:55:46 -0700 (PDT) From: Tim Gardner To: kernel-team@lists.ubuntu.com Subject: [PATCH 41/41] UBUNTU: [Packaging] linux-azure: Temporally disable signed image for the arm64 preview kernel Date: Thu, 4 Nov 2021 06:54:49 -0600 Message-Id: <20211104125449.16540-42-tim.gardner@canonical.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211104125449.16540-1-tim.gardner@canonical.com> References: <20211104125449.16540-1-tim.gardner@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Marcelo Henrique Cerri BugLink: https://bugs.launchpad.net/bugs/1949770 We should re-enable that once the builds are done in the archive. Signed-off-by: Marcelo Henrique Cerri --- debian.azure/rules.d/amd64.mk | 2 +- debian.azure/rules.d/arm64.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debian.azure/rules.d/amd64.mk b/debian.azure/rules.d/amd64.mk index 58e4df8cb3e3..f0ab323ee4a8 100644 --- a/debian.azure/rules.d/amd64.mk +++ b/debian.azure/rules.d/amd64.mk @@ -9,7 +9,7 @@ install_file = vmlinuz loader = grub vdso = vdso_install no_dumpfile = true -uefi_signed = true +uefi_signed = false do_tools_usbip = true do_tools_cpupower = true do_tools_perf = true diff --git a/debian.azure/rules.d/arm64.mk b/debian.azure/rules.d/arm64.mk index 9d6d987220a9..0a727e203f0c 100644 --- a/debian.azure/rules.d/arm64.mk +++ b/debian.azure/rules.d/arm64.mk @@ -7,7 +7,7 @@ build_image = Image.gz kernel_file = arch/$(build_arch)/boot/Image.gz install_file = vmlinuz no_dumpfile = true -uefi_signed = true +uefi_signed = false vdso = vdso_install do_extras_package = true do_tools_usbip = true