From nobody Sun May 12 22:26:45 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1693586111824487.8668365312717; Fri, 1 Sep 2023 09:35:11 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.594675.928075 (Exim 4.92) (envelope-from ) id 1qc76W-000208-8z; Fri, 01 Sep 2023 16:34:40 +0000 Received: by outflank-mailman (output) from mailman id 594675.928075; Fri, 01 Sep 2023 16:34:40 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qc76W-0001zS-6Q; Fri, 01 Sep 2023 16:34:40 +0000 Received: by outflank-mailman (input) for mailman id 594675; Fri, 01 Sep 2023 16:34:38 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qc76U-0001xb-K2 for xen-devel@lists.xenproject.org; Fri, 01 Sep 2023 16:34:38 +0000 Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 7008a98c-48e5-11ee-8783-cb3800f73035; Fri, 01 Sep 2023 18:34:36 +0200 (CEST) Received: from nico.bugseng.com (unknown [147.123.100.131]) by support.bugseng.com (Postfix) with ESMTPSA id 110F14EE0739; Fri, 1 Sep 2023 18:34:35 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 7008a98c-48e5-11ee-8783-cb3800f73035 From: Nicola Vetrini To: xen-devel@lists.xenproject.org Cc: sstabellini@kernel.org, michal.orzel@amd.com, xenia.ragiadakou@amd.com, ayan.kumar.halder@amd.com, consulting@bugseng.com, Nicola Vetrini , Andrew Cooper , George Dunlap , Jan Beulich , Julien Grall , Wei Liu , Bertrand Marquis , Volodymyr Babchuk , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [XEN PATCH 1/2] xen: apply deviation for Rule 8.4 (asm-only definitions) Date: Fri, 1 Sep 2023 18:34:19 +0200 Message-Id: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1693586112154100001 Content-Type: text/plain; charset="utf-8" As stated in 'docs/misra/rules.rst' the functions that are used only by asm modules do not need to conform to MISRA C:2012 Rule 8.4. The deviations are carried out with a SAF comment. Signed-off-by: Nicola Vetrini Reviewed-by: Stefano Stabellini --- Where the identifier for a function definition is on the next line w.r.t. t= he return type, they have been put on the same line (e.g. efi_start) to avoid stylistically questionable constructs, such as int /* SAF-1-safe */ func(void) { ... } This change is motivated by a shortcoming in the automatic translation of S= AF comments into ECLAIR-specific ones; the resulting comment deviates only the single line following it, rather than the whole declarator. ECLAIR comments= do support deviating more than one line, and an extension to the conversion sc= ript is already being discussed. --- docs/misra/safe.json | 8 ++++++++ xen/arch/arm/cpuerrata.c | 1 + xen/arch/arm/setup.c | 1 + xen/arch/arm/smpboot.c | 1 + xen/arch/arm/traps.c | 7 +++++++ xen/arch/x86/boot/cmdline.c | 1 + xen/arch/x86/boot/reloc.c | 1 + xen/arch/x86/extable.c | 4 ++-- xen/arch/x86/mm.c | 1 + xen/arch/x86/setup.c | 2 ++ xen/arch/x86/traps.c | 9 +++++++++ xen/common/efi/boot.c | 5 +++-- 12 files changed, 37 insertions(+), 4 deletions(-) diff --git a/docs/misra/safe.json b/docs/misra/safe.json index e3c8a1d8eb36..39c5c056c7d4 100644 --- a/docs/misra/safe.json +++ b/docs/misra/safe.json @@ -12,6 +12,14 @@ }, { "id": "SAF-1-safe", + "analyser": { + "eclair": "MC3R1.R8.4" + }, + "name": "Rule 8.4: asm-only definition", + "text": "Functions and variables used only by asm modules do n= ot need to have a visible declaration prior to their definition." + }, + { + "id": "SAF-2-safe", "analyser": {}, "name": "Sentinel", "text": "Next ID to be used" diff --git a/xen/arch/arm/cpuerrata.c b/xen/arch/arm/cpuerrata.c index fcf32892a7ef..9137958fb682 100644 --- a/xen/arch/arm/cpuerrata.c +++ b/xen/arch/arm/cpuerrata.c @@ -370,6 +370,7 @@ custom_param("spec-ctrl", parse_spec_ctrl); /* Arm64 only for now as for Arm32 the workaround is currently handled in = C. */ #ifdef CONFIG_ARM_64 +/* SAF-1-safe */ void __init arm_enable_wa2_handling(const struct alt_instr *alt, const uint32_t *origptr, uint32_t *updptr, int nr_inst) diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c index 44ccea03ca14..db748839d383 100644 --- a/xen/arch/arm/setup.c +++ b/xen/arch/arm/setup.c @@ -1077,6 +1077,7 @@ static bool __init is_dom0less_mode(void) size_t __read_mostly dcache_line_bytes; /* C entry point for boot CPU */ +/* SAF-1-safe */ void __init start_xen(unsigned long boot_phys_offset, unsigned long fdt_paddr) { diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c index e107b86b7b44..6efd17eb3500 100644 --- a/xen/arch/arm/smpboot.c +++ b/xen/arch/arm/smpboot.c @@ -302,6 +302,7 @@ smp_prepare_cpus(void) } /* Boot the current CPU */ +/* SAF-1-safe */ void start_secondary(void) { unsigned int cpuid =3D init_data.cpuid; diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c index 46c9a4031b30..ce89f16404d9 100644 --- a/xen/arch/arm/traps.c +++ b/xen/arch/arm/traps.c @@ -161,6 +161,7 @@ void init_traps(void) isb(); } +/* SAF-1-safe */ void __div0(void) { printk("Division by zero in hypervisor.\n"); @@ -1954,6 +1955,7 @@ static inline bool needs_ssbd_flip(struct vcpu *v) * Actions that needs to be done after entering the hypervisor from the * guest and before the interrupts are unmasked. */ +/* SAF-1-safe */ void enter_hypervisor_from_guest_preirq(void) { struct vcpu *v =3D current; @@ -1968,6 +1970,7 @@ void enter_hypervisor_from_guest_preirq(void) * guest and before we handle any request. Depending on the exception trap, * this may be called with interrupts unmasked. */ +/* SAF-1-safe */ void enter_hypervisor_from_guest(void) { struct vcpu *v =3D current; @@ -1996,6 +1999,7 @@ void enter_hypervisor_from_guest(void) vgic_sync_from_lrs(v); } +/* SAF-1-safe */ void do_trap_guest_sync(struct cpu_user_regs *regs) { const union hsr hsr =3D { .bits =3D regs->hsr }; @@ -2191,11 +2195,13 @@ void do_trap_guest_serror(struct cpu_user_regs *reg= s) __do_trap_serror(regs, true); } +/* SAF-1-safe */ void do_trap_irq(struct cpu_user_regs *regs) { gic_interrupt(regs, 0); } +/* SAF-1-safe */ void do_trap_fiq(struct cpu_user_regs *regs) { gic_interrupt(regs, 1); @@ -2269,6 +2275,7 @@ static bool check_for_vcpu_work(void) * * The function will return with IRQ masked. */ +/* SAF-1-safe */ void leave_hypervisor_to_guest(void) { local_irq_disable(); diff --git a/xen/arch/x86/boot/cmdline.c b/xen/arch/x86/boot/cmdline.c index 74997703b31e..f9eee756aaed 100644 --- a/xen/arch/x86/boot/cmdline.c +++ b/xen/arch/x86/boot/cmdline.c @@ -340,6 +340,7 @@ static void vga_parse(const char *cmdline, early_boot_o= pts_t *ebo) } #endif +/* SAF-1-safe */ void __stdcall cmdline_parse_early(const char *cmdline, early_boot_opts_t = *ebo) { if ( !cmdline ) diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c index e22bb974bf20..609b02cb73dc 100644 --- a/xen/arch/x86/boot/reloc.c +++ b/xen/arch/x86/boot/reloc.c @@ -347,6 +347,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, ui= nt32_t video_out) return mbi_out; } +/* SAF-1-safe */ void *__stdcall reloc(uint32_t magic, uint32_t in, uint32_t trampoline, uint32_t video_info) { diff --git a/xen/arch/x86/extable.c b/xen/arch/x86/extable.c index c3771c2e3937..74b14246e9d8 100644 --- a/xen/arch/x86/extable.c +++ b/xen/arch/x86/extable.c @@ -194,8 +194,8 @@ static int __init cf_check stub_selftest(void) __initcall(stub_selftest); #endif -unsigned long -search_pre_exception_table(struct cpu_user_regs *regs) +/* SAF-1-safe */ +unsigned long search_pre_exception_table(struct cpu_user_regs *regs) { unsigned long addr =3D regs->rip; unsigned long fixup =3D search_one_extable( diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 28fdf820ef3b..828786932021 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -143,6 +143,7 @@ /* Mapping of the fixmap space needed early. */ l1_pgentry_t __section(".bss.page_aligned") __aligned(PAGE_SIZE) l1_fixmap[L1_PAGETABLE_ENTRIES]; +/* SAF-1-safe */ l1_pgentry_t __section(".bss.page_aligned") __aligned(PAGE_SIZE) l1_fixmap_x[L1_PAGETABLE_ENTRIES]; diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 3358d9a0ff63..7e2979f419af 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -153,6 +153,7 @@ char __section(".init.bss.stack_aligned") __aligned(STA= CK_SIZE) void *stack_start =3D cpu0_stack + STACK_SIZE - sizeof(struct cpu_info); /* Used by the boot asm to stash the relocated multiboot info pointer. */ +/* SAF-1-safe */ unsigned int __initdata multiboot_ptr; struct cpuinfo_x86 __read_mostly boot_cpu_data =3D { 0, 0, 0, 0, -1 }; @@ -968,6 +969,7 @@ static struct domain *__init create_dom0(const module_t= *image, /* How much of the directmap is prebuilt at compile time. */ #define PREBUILT_MAP_LIMIT (1 << L2_PAGETABLE_SHIFT) +/* SAF-1-safe */ void __init noreturn __start_xen(unsigned long mbi_p) { const char *memmap_type =3D NULL; diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index a898e1f2d731..dead728ce329 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -833,6 +833,7 @@ void fatal_trap(const struct cpu_user_regs *regs, bool = show_remote) (regs->eflags & X86_EFLAGS_IF) ? "" : " IN INTERRUPT CONTEXT"); } +/* SAF-1-safe */ void do_unhandled_trap(struct cpu_user_regs *regs) { unsigned int trapnr =3D regs->entry_vector; @@ -920,6 +921,7 @@ static bool extable_fixup(struct cpu_user_regs *regs, b= ool print) return true; } +/* SAF-1-safe */ void do_trap(struct cpu_user_regs *regs) { unsigned int trapnr =3D regs->entry_vector; @@ -1152,6 +1154,7 @@ void cpuid_hypervisor_leaves(const struct vcpu *v, ui= nt32_t leaf, } } +/* SAF-1-safe */ void do_invalid_op(struct cpu_user_regs *regs) { u8 bug_insn[2]; @@ -1197,6 +1200,7 @@ void do_invalid_op(struct cpu_user_regs *regs) panic("FATAL TRAP: vector =3D %d (invalid opcode)\n", X86_EXC_UD); } +/* SAF-1-safe */ void do_int3(struct cpu_user_regs *regs) { struct vcpu *curr =3D current; @@ -1564,6 +1568,7 @@ static int fixup_page_fault(unsigned long addr, struc= t cpu_user_regs *regs) return 0; } +/* SAF-1-safe */ void do_page_fault(struct cpu_user_regs *regs) { unsigned long addr; @@ -1641,6 +1646,7 @@ void do_page_fault(struct cpu_user_regs *regs) * during early boot (an issue was seen once, but was most likely a hardwa= re * problem). */ +/* SAF-1-safe */ void __init do_early_page_fault(struct cpu_user_regs *regs) { static unsigned int __initdata stuck; @@ -1841,6 +1847,7 @@ void trigger_nmi_continuation(void) apic_wait_icr_idle(); } +/* SAF-1-safe */ void do_device_not_available(struct cpu_user_regs *regs) { #ifdef CONFIG_PV @@ -1877,6 +1884,7 @@ void do_device_not_available(struct cpu_user_regs *re= gs) #endif } +/* SAF-1-safe */ void do_debug(struct cpu_user_regs *regs) { unsigned long dr6; @@ -2002,6 +2010,7 @@ void do_debug(struct cpu_user_regs *regs) pv_inject_hw_exception(X86_EXC_DB, X86_EVENT_NO_EC); } +/* SAF-1-safe */ void do_entry_CP(struct cpu_user_regs *regs) { static const char errors[][10] =3D { diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c index 79a654af69b0..99cb033e2a6f 100644 --- a/xen/common/efi/boot.c +++ b/xen/common/efi/boot.c @@ -1253,8 +1253,9 @@ static void __init efi_exit_boot(EFI_HANDLE ImageHand= le, EFI_SYSTEM_TABLE *Syste efi_fw_vendor =3D (void *)efi_fw_vendor + DIRECTMAP_VIRT_START; } -void EFIAPI __init noreturn -efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) +/* SAF-1-safe */ +void EFIAPI __init noreturn efi_start(EFI_HANDLE ImageHandle, + EFI_SYSTEM_TABLE *SystemTable) { static EFI_GUID __initdata loaded_image_guid =3D LOADED_IMAGE_PROTOCOL; static EFI_GUID __initdata shim_lock_guid =3D SHIM_LOCK_PROTOCOL_GUID; -- 2.34.1 From nobody Sun May 12 22:26:45 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1693586102609416.281246171837; Fri, 1 Sep 2023 09:35:02 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.594674.928071 (Exim 4.92) (envelope-from ) id 1qc76W-0001xu-2v; Fri, 01 Sep 2023 16:34:40 +0000 Received: by outflank-mailman (output) from mailman id 594674.928071; Fri, 01 Sep 2023 16:34:40 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qc76W-0001xn-0C; Fri, 01 Sep 2023 16:34:40 +0000 Received: by outflank-mailman (input) for mailman id 594674; Fri, 01 Sep 2023 16:34:38 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qc76T-0001xb-Ux for xen-devel@lists.xenproject.org; Fri, 01 Sep 2023 16:34:37 +0000 Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 706bcf97-48e5-11ee-8783-cb3800f73035; Fri, 01 Sep 2023 18:34:36 +0200 (CEST) Received: from nico.bugseng.com (unknown [147.123.100.131]) by support.bugseng.com (Postfix) with ESMTPSA id ED42F4EE073A; Fri, 1 Sep 2023 18:34:35 +0200 (CEST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 706bcf97-48e5-11ee-8783-cb3800f73035 From: Nicola Vetrini To: xen-devel@lists.xenproject.org Cc: sstabellini@kernel.org, michal.orzel@amd.com, xenia.ragiadakou@amd.com, ayan.kumar.halder@amd.com, consulting@bugseng.com, Nicola Vetrini , Simone Ballarin , Doug Goldstein Subject: [XEN PATCH 2/2] automation: execute SAF translation before the analysis with ECLAIR Date: Fri, 1 Sep 2023 18:34:20 +0200 Message-Id: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1693586104427100001 Content-Type: text/plain; charset="utf-8" This allows local MISRA deviation comments to be translated into the format recognized by ECLAIR. Signed-off-by: Nicola Vetrini Acked-by: Stefano Stabellini --- automation/eclair_analysis/prepare.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/automation/eclair_analysis/prepare.sh b/automation/eclair_anal= ysis/prepare.sh index 275a1a3f517c..0cac5eba00ae 100755 --- a/automation/eclair_analysis/prepare.sh +++ b/automation/eclair_analysis/prepare.sh @@ -38,5 +38,8 @@ fi cd xen cp "${CONFIG_FILE}" .config make clean + find . -type f -name "*.safparse" -print -delete make -f ${script_dir}/Makefile.prepare prepare + # Translate the /* SAF-n-safe */ comments into ECLAIR CBTs + scripts/xen-analysis.py --run-eclair --no-build --no-clean ) --=20 2.34.1