[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen master] docs: Move function and macro properties in docs/misra



commit b36d850c228807287b138b83fe6b198c943c2b66
Author:     Simone Ballarin <simone.ballarin@xxxxxxxxxxx>
AuthorDate: Tue Feb 27 16:36:30 2024 +0100
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Thu Feb 29 08:20:05 2024 +0100

    docs: Move function and macro properties in docs/misra
    
    The list of function/macro properties is not MISRA-specific documentation.
    Their addition was directly motivated to address MISRA findings and they
    are not used elsewhere. For this reason, this patch moves these properties
    in docs/misra.
    
    This patch also fixes a Sphinx warning caused by the missing inclusion
    of the rst file in the toctree.
    
    Reported-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Fixes: f4519ee8 ("eclair: move function and macro properties outside 
ECLAIR")
    Signed-off-by: Simone Ballarin <simone.ballarin@xxxxxxxxxxx>
    Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
 automation/eclair_analysis/propertyparser.py |   2 +-
 docs/function_macro_properties.json          | 841 ---------------------------
 docs/function_macro_properties.rst           |  58 --
 docs/misra/function-macro-properties.json    | 841 +++++++++++++++++++++++++++
 docs/misra/function-macro-properties.rst     |  58 ++
 docs/misra/index.rst                         |   1 +
 6 files changed, 901 insertions(+), 900 deletions(-)

diff --git a/automation/eclair_analysis/propertyparser.py 
b/automation/eclair_analysis/propertyparser.py
index 0d02f505a6..5059a68fec 100644
--- a/automation/eclair_analysis/propertyparser.py
+++ b/automation/eclair_analysis/propertyparser.py
@@ -2,7 +2,7 @@ import json
 import os
 
 script_dir = os.path.dirname(__file__)
-properties_path = os.path.join(script_dir, 
"../../docs/function_macro_properties.json")
+properties_path = os.path.join(script_dir, 
"../../docs/misra/function-macro-properties.json")
 output_path   = os.path.join(script_dir, "ECLAIR/call_properties.ecl")
 
 with open(properties_path) as fp:
diff --git a/docs/function_macro_properties.json 
b/docs/function_macro_properties.json
deleted file mode 100644
index 74058297b5..0000000000
--- a/docs/function_macro_properties.json
+++ /dev/null
@@ -1,841 +0,0 @@
-{
-   "version": "1.0",
-   "content": [
-      {
-         "type": "function",
-         "value": "^printk.*$",
-         "properties":{
-            "pointee_write": "1..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^debugtrace_printk.*$",
-         "properties":{
-            "pointee_write": "1..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^panic.*$",
-         "properties":{
-            "pointee_write": "1..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "macro",
-         "value": "^domain_crash$",
-         "properties":{
-            "pointee_write": "2..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "macro",
-         "value": "^(g?d|mm_)?printk$",
-         "properties":{
-            "pointee_write": "2..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "macro",
-         "value": "^guest_bug_on_failed$",
-         "properties":{
-            "pointee_write": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "macro",
-         "value": "^spin_lock_init_prof$",
-         "properties":{
-            "pointee_write": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "macro",
-         "value": "^sched_test_func$",
-         "properties":{
-            "pointee_write": "1..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "macro",
-         "value": "^dev_(info|warn)$",
-         "properties":{
-            "pointee_write": "1..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "macro",
-         "value": "^PAGING_DEBUG$",
-         "properties":{
-            "pointee_write": "1..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "macro",
-         "value": "^ACPI_(WARNING|ERROR|INFO)$",
-         "properties":{
-            "pointee_write": "1..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^fdt_get_property_by_offset_.*$",
-         "properties":{
-            "pointee_write": "3=always",
-            "pointee_read": "3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^read_atomic_size.*$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^device_tree_get_reg.*$",
-         "properties":{
-            "pointee_write": "4..=always",
-            "pointee_read": "4..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^dt_get_range.*$",
-         "properties":{
-            "pointee_write": "3..=always",
-            "pointee_read": "3..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^parse_static_mem_prop.*$",
-         "properties":{
-            "pointee_write": "2..=always",
-            "pointee_read": "2..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^get_ttbr_and_gran_64bit.*$",
-         "properties":{
-            "pointee_write": "1..2=always",
-            "pointee_read": "1..2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^hvm_emulate_init_once.*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^__vmread.*$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^hvm_pci_decode_addr.*$",
-         "properties":{
-            "pointee_write": "3=always",
-            "pointee_read": "3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^vpci_mmcfg_decode_addr.*$",
-         "properties":{
-            "pointee_write": "3=always",
-            "pointee_read": "3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^x86emul_decode.*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^unmap_grant_ref.*$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^arm_smmu_cmdq_build_cmd.*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^pci_size_mem_bar.*$",
-         "properties":{
-            "pointee_write": "4=always",
-            "pointee_read": "4=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^_hvm_read_entry.*$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^hvm_map_guest_frame_rw.*$",
-         "properties":{
-            "pointee_write": "3=always",
-            "pointee_read": "3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^guest_cpuid.*$",
-         "properties":{
-            "pointee_write": "4=always",
-            "pointee_read": "4=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^epte_get_entry_emt.*$",
-         "properties":{
-            "pointee_write": "5=always",
-            "pointee_read": "5=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^mcheck_mca_logout.*$",
-         "properties":{
-            "pointee_write": "3=always",
-            "pointee_read": "3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^set_field_in_reg_u32.*$",
-         "properties":{
-            "pointee_write": "5=always",
-            "pointee_read": "5=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^alloc_affinity_masks.*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^xasprintf.*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^find_non_smt.*$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^call_rcu.*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^getdomaininfo.*$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^MAPPING_(INSERT|SEARCH)\\(.*$",
-         "properties":{
-            "pointee_write": "2..=always",
-            "pointee_read": "2..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^FormatDec.*$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^FormatHex.*$",
-         "properties":{
-            "pointee_write": "3=always",
-            "pointee_read": "3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^p2m_get_ioreq_server.*$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^elf_memset_unchecked.*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^set_iommu_pte_present.*$",
-         "properties":{
-            "pointee_write": "7=always",
-            "pointee_read": "7=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^clear_iommu_pte_present.*$",
-         "properties":{
-            "pointee_write": "4=always",
-            "pointee_read": "4=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^vcpu_runstate_get.*$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^va_start.*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^sgi_target_init.*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^get_hw_residencies.*$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^x86_cpu_policy_to_featureset.*$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^simple_strtou?ll?\\(.*$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^msi_compose_msg.*$",
-         "properties":{
-            "pointee_write": "3=always",
-            "pointee_read": "3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^print_tainted.*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^get_hvm_registers.*$",
-         "properties":{
-            "pointee_write": "3=always",
-            "pointee_read": "3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^x86_insn_modrm.*$",
-         "properties":{
-            "pointee_write": "2..3=always",
-            "pointee_read": "2..3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^cpuid_count_leaf.*$",
-         "properties":{
-            "pointee_write": "3=always",
-            "pointee_read": "3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^rcu_lock_remote_domain_by_id.*$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^cpuid_count.*$",
-         "properties":{
-            "pointee_write": "3..=always",
-            "pointee_read": "3..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^.*efi_boot_mem_unused.*$",
-         "properties":{
-            "pointee_write": "1..=always",
-            "pointee_read": "1..=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^collect_time_info.*$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^setup_xstate_comp.*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^map_domain_gfn.*$",
-         "properties":{
-            "pointee_read": "5=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^fdt_getprop.*$",
-         "properties":{
-            "pointee_read": "4=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^fdt_get_name.*$",
-         "properties":{
-            "pointee_read": "3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^fdt_get_property.*$",
-         "properties":{
-            "pointee_read": "4=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^pci_get_host_bridge_segment.*$",
-         "properties":{
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^dt_get_property.*$",
-         "properties":{
-            "pointee_read": "3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^dt_property_read_u32.*$",
-         "properties":{
-            "pointee_read": "3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^dt_device_get_paddr.*$",
-         "properties":{
-            "pointee_read": "3..4=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^get_evtchn_dt_property.*$",
-         "properties":{
-            "pointee_write": "2..3=maybe",
-            "pointee_read": "2..3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^setup_chosen_node.*$",
-         "properties":{
-            "pointee_write": "2..3=maybe",
-            "pointee_read": "2..3=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^queue_remove_raw.*$",
-         "properties":{
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "macro",
-         "value": "^memset$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "macro",
-         "value": "^va_start$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "macro",
-         "value": "^memcmp$",
-         "properties":{
-            "pointee_write": "1..2=never",
-            "taken": ""
-         }
-      },
-      {
-         "type": "macro",
-         "value": "^memcpy$",
-         "properties":{
-            "pointee_write": "1=always&&2..=never",
-            "pointee_read": "1=never&&2..=always",
-            "taken": ""
-         }
-      },
-      {
-         "type": "function",
-         "value": "^get_cpu_info.*$",
-         "properties":{
-            "attribute": "pure"
-         }
-      },
-      {
-         "type": "function",
-         "value": "^pdx_to_pfn.*$",
-         "properties":{
-            "attribute": "pure"
-         }
-      },
-      {
-         "type": "function",
-         "value": "^is_pci_passthrough_enabled.*$",
-         "properties":{
-            "attribute": "const"
-         }
-      },
-      {
-         "type": "function",
-         "value": "^get_cycles.*$",
-         "properties":{
-            "attribute": "noeffect"
-         }
-      },
-      {
-         "type": "function",
-         "value": "^msi_gflags.*$",
-         "properties":{
-            "attribute": "const"
-         }
-      },
-      {
-         "type": "function",
-         "value": "^hvm_save_size.*$",
-         "properties":{
-            "attribute": "pure"
-         }
-      },
-      {
-         "type": "function",
-         "value": "^cpu_has.*$",
-         "properties":{
-            "attribute": "pure"
-         }
-      },
-      {
-         "type": "function",
-         "value": "^boot_cpu_has.*$",
-         "properties":{
-            "attribute": "pure"
-         }
-      },
-      {
-         "type": "function",
-         "value": "^get_cpu_info.*$",
-         "properties":{
-            "attribute": "pure"
-         }
-      },
-      {
-         "type": "function",
-         "value": "^put_pte_flags.*$",
-         "properties":{
-            "attribute": "const"
-         }
-      },
-      {
-         "type": "function",
-         "value": "^is_pv_cpu.*$",
-         "properties":{
-            "attribute": "pure"
-         }
-      },
-      {
-         "description": "Property inferred as a consequence of the semantics 
of device_tree_get_reg",
-         "type": "function",
-         "value": "^acquire_static_memory_bank.*$",
-         "properties":{
-            "pointee_write": "4..=always",
-            "pointee_read": "4..=never",
-            "taken": ""
-         }
-      },
-      {
-         "description": "Property inferred as a consequence of the semantics 
of dt_set_cell",
-         "type": "function",
-         "value": "^set_interrupt.*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "description":"Property inferred as a consequence of the semantics of 
__p2m_get_mem_access",
-         "type": "function",
-         "value": "^p2m_get_mem_access.*$",
-         "properties":{
-            "pointee_write": "3=always",
-            "pointee_read": "3=never",
-            "taken": ""
-         }
-      },
-      {
-         "description": "This function has alternative definitions with props 
{write=always,read=never} and {write=never,read=never}",
-         "type": "function",
-         "value": "^alloc_cpumask_var.*$",
-         "properties":{
-            "pointee_write": "1=maybe",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "description": "Property inferred as a consequence of the semantics 
of alloc_cpumask_var",
-         "type": "function",
-         "value": "^xenctl_bitmap_to_cpumask.*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "description": "The call to bitmap_and causes the pointee of dstp to 
be always written",
-         "type": "function",
-         "value": "^cpumask_(and|andnot|clear|copy|complement).*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "description": "The call to bitmap_and causes the pointee of dstp to 
be always written",
-         "type": "function",
-         "value": "^bitmap_(andnot|complement|fill).*$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "description": "The .*copy_(to|from).* helpers all have a memcpy-like 
expectation that the destination is a copy of the source. Furthermore, their 
uses do initialize the involved variables as needed by futher uses in the 
caller.",
-         "type": "macro",
-         "value": "^(__)?(raw_)?copy_from_(paddr|guest|compat)(_offset)?$",
-         "properties":{
-            "pointee_write": "1=always",
-            "pointee_read": "1=never",
-            "taken": ""
-         }
-      },
-      {
-         "description":"The .*copy_(to|from).* helpers all have a memcpy-like 
expectation that the destination is a copy of the source. Furthermore, their 
uses do initialize the involved variables as needed by futher uses in the 
caller.",
-         "type": "macro",
-         "value": "^(__)?copy_to_(guest|compat)(_offset)?$",
-         "properties":{
-            "pointee_write": "2=always",
-            "pointee_read": "2=never",
-            "taken": ""
-         }
-      },
-      {
-         "description": "Functions generated by build_atomic_read cannot be 
considered pure since the input pointer is volatile, but they do not produce 
any persistent side effect.",
-         "type": "function",
-         "value": "^read_u(8|16|32|64|int)_atomic.*$",
-         "properties":{
-            "attribute": "noeffect"
-         }
-      },
-      {
-         "description": "Functions generated by TYPE_SAFE are const.",
-         "type": "function",
-         "value": "^(mfn|gfn|pfn)_x\\(.*$",
-         "properties":{
-            "attribute": "const"
-         }
-      },
-      {
-         "description": "Functions generated by TYPE_SAFE are const.",
-         "type": "function",
-         "value": "^_(mfn|gfn|pfn)\\(.*$",
-         "properties":{
-            "attribute": "const"
-         }
-      }
-   ]
-}
diff --git a/docs/function_macro_properties.rst 
b/docs/function_macro_properties.rst
deleted file mode 100644
index ea6fb5cf1f..0000000000
--- a/docs/function_macro_properties.rst
+++ /dev/null
@@ -1,58 +0,0 @@
-.. SPDX-License-Identifier: CC-BY-4.0
-
-Properties list for Xen
-=======================
-
-Some functions and macros are found to have properties relevant to
-the Xen codebase. For this reason, the file docs/properties.json
-contains all the needed properties.
-
-Here is an example of the properties.json file::
-
-  {
-     "version": "1.0",
-     "content": [
-        {
-           "description": ""
-           "type": "function",       // required
-           "value:": "^printk*.$",   // required
-           "properties":{
-              "pointee_write": "1..2=never",
-              "pointee_read": "",
-              "taken": ""
-              "attribute": ""
-           }
-        }
-     ]
-  }
-
-Here is an explanation of the fields inside an object of the "content" array:
-
- - description: a brief description of why the properties apply
- - type: this is the kind of the element called: it may be either ``macro`` or 
``function``
- - value: must be a regex, starting with ^ and ending with $ and matching 
function fully
-   qualified name or macro name.
- - properties: a list of properties applied to said function.
-   Possible values are:
-
-    - pointee_write: indicate the write use for call arguments that correspond 
to
-      parameters whose pointee types are non-const
-    - pointee_read: indicate the read use for call arguments that correspond to
-      parameters whose pointee types are non-const
-    - taken: indicates that the specified address arguments may be stored in 
objects
-      that persist after the function has ceased to exist (excluding the 
returned value);
-      address arguments not listed are never taken
-    - attribute: attributes a function may have. Possible values are pure, 
const and noeffect.
-
-   pointee_read and pointee_write use a specific kind of argument, structured 
as pointee_arg=rw:
-
-    - pointee_arg: argument index for callee. Index 0 refers to the return 
value,
-      the indices of the arguments start from 1. It can be either a single 
value or a range.
-    - rw: a value that's either always, maybe or never
-
-       - always: for pointee_read: argument pointee is expected to be fully 
read in the function body,
-         for pointee_write: argument pointee is fully initialized at function 
exit
-       - maybe: for pointee_read: argument pointee may be expected to be read 
in the function body,
-         for pointee_write: argument pointee may be written by function body
-       - never: for pointee_read: argument pointee is not expected to be read 
in the function body,
-         for pointee_write: argument pointee is never written by function body
diff --git a/docs/misra/function-macro-properties.json 
b/docs/misra/function-macro-properties.json
new file mode 100644
index 0000000000..74058297b5
--- /dev/null
+++ b/docs/misra/function-macro-properties.json
@@ -0,0 +1,841 @@
+{
+   "version": "1.0",
+   "content": [
+      {
+         "type": "function",
+         "value": "^printk.*$",
+         "properties":{
+            "pointee_write": "1..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^debugtrace_printk.*$",
+         "properties":{
+            "pointee_write": "1..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^panic.*$",
+         "properties":{
+            "pointee_write": "1..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "macro",
+         "value": "^domain_crash$",
+         "properties":{
+            "pointee_write": "2..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "macro",
+         "value": "^(g?d|mm_)?printk$",
+         "properties":{
+            "pointee_write": "2..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "macro",
+         "value": "^guest_bug_on_failed$",
+         "properties":{
+            "pointee_write": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "macro",
+         "value": "^spin_lock_init_prof$",
+         "properties":{
+            "pointee_write": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "macro",
+         "value": "^sched_test_func$",
+         "properties":{
+            "pointee_write": "1..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "macro",
+         "value": "^dev_(info|warn)$",
+         "properties":{
+            "pointee_write": "1..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "macro",
+         "value": "^PAGING_DEBUG$",
+         "properties":{
+            "pointee_write": "1..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "macro",
+         "value": "^ACPI_(WARNING|ERROR|INFO)$",
+         "properties":{
+            "pointee_write": "1..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^fdt_get_property_by_offset_.*$",
+         "properties":{
+            "pointee_write": "3=always",
+            "pointee_read": "3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^read_atomic_size.*$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^device_tree_get_reg.*$",
+         "properties":{
+            "pointee_write": "4..=always",
+            "pointee_read": "4..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^dt_get_range.*$",
+         "properties":{
+            "pointee_write": "3..=always",
+            "pointee_read": "3..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^parse_static_mem_prop.*$",
+         "properties":{
+            "pointee_write": "2..=always",
+            "pointee_read": "2..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^get_ttbr_and_gran_64bit.*$",
+         "properties":{
+            "pointee_write": "1..2=always",
+            "pointee_read": "1..2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^hvm_emulate_init_once.*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^__vmread.*$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^hvm_pci_decode_addr.*$",
+         "properties":{
+            "pointee_write": "3=always",
+            "pointee_read": "3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^vpci_mmcfg_decode_addr.*$",
+         "properties":{
+            "pointee_write": "3=always",
+            "pointee_read": "3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^x86emul_decode.*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^unmap_grant_ref.*$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^arm_smmu_cmdq_build_cmd.*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^pci_size_mem_bar.*$",
+         "properties":{
+            "pointee_write": "4=always",
+            "pointee_read": "4=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^_hvm_read_entry.*$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^hvm_map_guest_frame_rw.*$",
+         "properties":{
+            "pointee_write": "3=always",
+            "pointee_read": "3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^guest_cpuid.*$",
+         "properties":{
+            "pointee_write": "4=always",
+            "pointee_read": "4=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^epte_get_entry_emt.*$",
+         "properties":{
+            "pointee_write": "5=always",
+            "pointee_read": "5=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^mcheck_mca_logout.*$",
+         "properties":{
+            "pointee_write": "3=always",
+            "pointee_read": "3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^set_field_in_reg_u32.*$",
+         "properties":{
+            "pointee_write": "5=always",
+            "pointee_read": "5=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^alloc_affinity_masks.*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^xasprintf.*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^find_non_smt.*$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^call_rcu.*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^getdomaininfo.*$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^MAPPING_(INSERT|SEARCH)\\(.*$",
+         "properties":{
+            "pointee_write": "2..=always",
+            "pointee_read": "2..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^FormatDec.*$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^FormatHex.*$",
+         "properties":{
+            "pointee_write": "3=always",
+            "pointee_read": "3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^p2m_get_ioreq_server.*$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^elf_memset_unchecked.*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^set_iommu_pte_present.*$",
+         "properties":{
+            "pointee_write": "7=always",
+            "pointee_read": "7=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^clear_iommu_pte_present.*$",
+         "properties":{
+            "pointee_write": "4=always",
+            "pointee_read": "4=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^vcpu_runstate_get.*$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^va_start.*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^sgi_target_init.*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^get_hw_residencies.*$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^x86_cpu_policy_to_featureset.*$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^simple_strtou?ll?\\(.*$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^msi_compose_msg.*$",
+         "properties":{
+            "pointee_write": "3=always",
+            "pointee_read": "3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^print_tainted.*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^get_hvm_registers.*$",
+         "properties":{
+            "pointee_write": "3=always",
+            "pointee_read": "3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^x86_insn_modrm.*$",
+         "properties":{
+            "pointee_write": "2..3=always",
+            "pointee_read": "2..3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^cpuid_count_leaf.*$",
+         "properties":{
+            "pointee_write": "3=always",
+            "pointee_read": "3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^rcu_lock_remote_domain_by_id.*$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^cpuid_count.*$",
+         "properties":{
+            "pointee_write": "3..=always",
+            "pointee_read": "3..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^.*efi_boot_mem_unused.*$",
+         "properties":{
+            "pointee_write": "1..=always",
+            "pointee_read": "1..=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^collect_time_info.*$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^setup_xstate_comp.*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^map_domain_gfn.*$",
+         "properties":{
+            "pointee_read": "5=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^fdt_getprop.*$",
+         "properties":{
+            "pointee_read": "4=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^fdt_get_name.*$",
+         "properties":{
+            "pointee_read": "3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^fdt_get_property.*$",
+         "properties":{
+            "pointee_read": "4=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^pci_get_host_bridge_segment.*$",
+         "properties":{
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^dt_get_property.*$",
+         "properties":{
+            "pointee_read": "3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^dt_property_read_u32.*$",
+         "properties":{
+            "pointee_read": "3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^dt_device_get_paddr.*$",
+         "properties":{
+            "pointee_read": "3..4=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^get_evtchn_dt_property.*$",
+         "properties":{
+            "pointee_write": "2..3=maybe",
+            "pointee_read": "2..3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^setup_chosen_node.*$",
+         "properties":{
+            "pointee_write": "2..3=maybe",
+            "pointee_read": "2..3=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^queue_remove_raw.*$",
+         "properties":{
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "macro",
+         "value": "^memset$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "macro",
+         "value": "^va_start$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "macro",
+         "value": "^memcmp$",
+         "properties":{
+            "pointee_write": "1..2=never",
+            "taken": ""
+         }
+      },
+      {
+         "type": "macro",
+         "value": "^memcpy$",
+         "properties":{
+            "pointee_write": "1=always&&2..=never",
+            "pointee_read": "1=never&&2..=always",
+            "taken": ""
+         }
+      },
+      {
+         "type": "function",
+         "value": "^get_cpu_info.*$",
+         "properties":{
+            "attribute": "pure"
+         }
+      },
+      {
+         "type": "function",
+         "value": "^pdx_to_pfn.*$",
+         "properties":{
+            "attribute": "pure"
+         }
+      },
+      {
+         "type": "function",
+         "value": "^is_pci_passthrough_enabled.*$",
+         "properties":{
+            "attribute": "const"
+         }
+      },
+      {
+         "type": "function",
+         "value": "^get_cycles.*$",
+         "properties":{
+            "attribute": "noeffect"
+         }
+      },
+      {
+         "type": "function",
+         "value": "^msi_gflags.*$",
+         "properties":{
+            "attribute": "const"
+         }
+      },
+      {
+         "type": "function",
+         "value": "^hvm_save_size.*$",
+         "properties":{
+            "attribute": "pure"
+         }
+      },
+      {
+         "type": "function",
+         "value": "^cpu_has.*$",
+         "properties":{
+            "attribute": "pure"
+         }
+      },
+      {
+         "type": "function",
+         "value": "^boot_cpu_has.*$",
+         "properties":{
+            "attribute": "pure"
+         }
+      },
+      {
+         "type": "function",
+         "value": "^get_cpu_info.*$",
+         "properties":{
+            "attribute": "pure"
+         }
+      },
+      {
+         "type": "function",
+         "value": "^put_pte_flags.*$",
+         "properties":{
+            "attribute": "const"
+         }
+      },
+      {
+         "type": "function",
+         "value": "^is_pv_cpu.*$",
+         "properties":{
+            "attribute": "pure"
+         }
+      },
+      {
+         "description": "Property inferred as a consequence of the semantics 
of device_tree_get_reg",
+         "type": "function",
+         "value": "^acquire_static_memory_bank.*$",
+         "properties":{
+            "pointee_write": "4..=always",
+            "pointee_read": "4..=never",
+            "taken": ""
+         }
+      },
+      {
+         "description": "Property inferred as a consequence of the semantics 
of dt_set_cell",
+         "type": "function",
+         "value": "^set_interrupt.*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "description":"Property inferred as a consequence of the semantics of 
__p2m_get_mem_access",
+         "type": "function",
+         "value": "^p2m_get_mem_access.*$",
+         "properties":{
+            "pointee_write": "3=always",
+            "pointee_read": "3=never",
+            "taken": ""
+         }
+      },
+      {
+         "description": "This function has alternative definitions with props 
{write=always,read=never} and {write=never,read=never}",
+         "type": "function",
+         "value": "^alloc_cpumask_var.*$",
+         "properties":{
+            "pointee_write": "1=maybe",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "description": "Property inferred as a consequence of the semantics 
of alloc_cpumask_var",
+         "type": "function",
+         "value": "^xenctl_bitmap_to_cpumask.*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "description": "The call to bitmap_and causes the pointee of dstp to 
be always written",
+         "type": "function",
+         "value": "^cpumask_(and|andnot|clear|copy|complement).*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "description": "The call to bitmap_and causes the pointee of dstp to 
be always written",
+         "type": "function",
+         "value": "^bitmap_(andnot|complement|fill).*$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "description": "The .*copy_(to|from).* helpers all have a memcpy-like 
expectation that the destination is a copy of the source. Furthermore, their 
uses do initialize the involved variables as needed by futher uses in the 
caller.",
+         "type": "macro",
+         "value": "^(__)?(raw_)?copy_from_(paddr|guest|compat)(_offset)?$",
+         "properties":{
+            "pointee_write": "1=always",
+            "pointee_read": "1=never",
+            "taken": ""
+         }
+      },
+      {
+         "description":"The .*copy_(to|from).* helpers all have a memcpy-like 
expectation that the destination is a copy of the source. Furthermore, their 
uses do initialize the involved variables as needed by futher uses in the 
caller.",
+         "type": "macro",
+         "value": "^(__)?copy_to_(guest|compat)(_offset)?$",
+         "properties":{
+            "pointee_write": "2=always",
+            "pointee_read": "2=never",
+            "taken": ""
+         }
+      },
+      {
+         "description": "Functions generated by build_atomic_read cannot be 
considered pure since the input pointer is volatile, but they do not produce 
any persistent side effect.",
+         "type": "function",
+         "value": "^read_u(8|16|32|64|int)_atomic.*$",
+         "properties":{
+            "attribute": "noeffect"
+         }
+      },
+      {
+         "description": "Functions generated by TYPE_SAFE are const.",
+         "type": "function",
+         "value": "^(mfn|gfn|pfn)_x\\(.*$",
+         "properties":{
+            "attribute": "const"
+         }
+      },
+      {
+         "description": "Functions generated by TYPE_SAFE are const.",
+         "type": "function",
+         "value": "^_(mfn|gfn|pfn)\\(.*$",
+         "properties":{
+            "attribute": "const"
+         }
+      }
+   ]
+}
diff --git a/docs/misra/function-macro-properties.rst 
b/docs/misra/function-macro-properties.rst
new file mode 100644
index 0000000000..ea6fb5cf1f
--- /dev/null
+++ b/docs/misra/function-macro-properties.rst
@@ -0,0 +1,58 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Properties list for Xen
+=======================
+
+Some functions and macros are found to have properties relevant to
+the Xen codebase. For this reason, the file docs/properties.json
+contains all the needed properties.
+
+Here is an example of the properties.json file::
+
+  {
+     "version": "1.0",
+     "content": [
+        {
+           "description": ""
+           "type": "function",       // required
+           "value:": "^printk*.$",   // required
+           "properties":{
+              "pointee_write": "1..2=never",
+              "pointee_read": "",
+              "taken": ""
+              "attribute": ""
+           }
+        }
+     ]
+  }
+
+Here is an explanation of the fields inside an object of the "content" array:
+
+ - description: a brief description of why the properties apply
+ - type: this is the kind of the element called: it may be either ``macro`` or 
``function``
+ - value: must be a regex, starting with ^ and ending with $ and matching 
function fully
+   qualified name or macro name.
+ - properties: a list of properties applied to said function.
+   Possible values are:
+
+    - pointee_write: indicate the write use for call arguments that correspond 
to
+      parameters whose pointee types are non-const
+    - pointee_read: indicate the read use for call arguments that correspond to
+      parameters whose pointee types are non-const
+    - taken: indicates that the specified address arguments may be stored in 
objects
+      that persist after the function has ceased to exist (excluding the 
returned value);
+      address arguments not listed are never taken
+    - attribute: attributes a function may have. Possible values are pure, 
const and noeffect.
+
+   pointee_read and pointee_write use a specific kind of argument, structured 
as pointee_arg=rw:
+
+    - pointee_arg: argument index for callee. Index 0 refers to the return 
value,
+      the indices of the arguments start from 1. It can be either a single 
value or a range.
+    - rw: a value that's either always, maybe or never
+
+       - always: for pointee_read: argument pointee is expected to be fully 
read in the function body,
+         for pointee_write: argument pointee is fully initialized at function 
exit
+       - maybe: for pointee_read: argument pointee may be expected to be read 
in the function body,
+         for pointee_write: argument pointee may be written by function body
+       - never: for pointee_read: argument pointee is not expected to be read 
in the function body,
+         for pointee_write: argument pointee is never written by function body
diff --git a/docs/misra/index.rst b/docs/misra/index.rst
index 5068ee5aef..bde9d9cffb 100644
--- a/docs/misra/index.rst
+++ b/docs/misra/index.rst
@@ -16,3 +16,4 @@ Xen hypervisor code and related documents.
    documenting-violations
    exclude-list
    xen-static-analysis
+   function-macro-properties
--
generated by git-patchbot for /home/xen/git/xen.git#master



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.