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

Re: [Xen-devel] Xen: ARM: Support for mapping OperationRegion in ACPI ASL



On Tue, Dec 13, 2016 at 07:14:27PM -0600, Jiandi An wrote:
> Hi Guys,
> 
> Xen currently does not handle mapping of MMIO regions specified under 
> OperationRegion in ACPI ASL.  OperationRegion is well defined in ACPI 
> specification.  I'm seeking for architectural direction on adding support for 
> mapping OperationRegion.
> 
> Some context here.  Mapping of resources specificed under _CRS in ACPI is 
> handled by dom0 requesting Xen to map as platform devices are added.  
> https://lwn.net/Articles/674666/ provided service xen_map_device_mmio() in 
> dom0 to call Xen to map and it's done so by registering 
> xen_platform_notifier() platform bus driver.  This covers the platform 
> devices.
> 
> The OperationRegion access in dom0 is in acpica path.  The following is a 
> stack of the code path where OperationRegion is parsed.  
> acpi_ex_system_memory_space_handler() gets the parsed address specified in 
> OperationRegion in ACPI and maps it then performs the memory read or write.  
> 
> acpi_ex_system_memory_space_handler+0x378/0x424
> acpi_ev_address_space_dispatch+0x294/0x310
> acpi_ex_access_region+0x3c0/0x468
> acpi_ex_field_datum_io+0x14c/0x380
> acpi_ex_extract_from_field+0xe8/0x2f4
> acpi_ex_read_data_from_field+0x330/0x38c
> acpi_ex_resolve_node_to_value+0x310/0x3fc
> acpi_ex_resolve_to_value+0x354/0x3e8
> acpi_ds_evaluate_name_path+0xa4/0x15c
> acpi_ds_exec_end_op+0xbc/0x6c8
> acpi_ps_parse_loop+0x7ac/0x840
> acpi_ps_parse_aml+0x1c4/0x434
> acpi_ps_execute_method+0x1f0/0x2a0
> acpi_ns_evaluate+0x2e4/0x424
> acpi_ut_evaluate_object+0xb0/0x250
> acpi_ut_execute_STA+0xb0/0x164
> acpi_ns_init_one_device+0xac/0x250
> acpi_ns_walk_namespace+0x108/0x254
> acpi_ns_initialize_devices+0x274/0x35c
> acpi_initialize_objects+0x90/0xf0
> acpi_init+0xc0/0x30c
> do_one_initcall+0x44/0x138
> kernel_init_freeable+0x148/0x1ec
> kernel_init+0x18/0x108
> 
> The workaround in testing for handling OperationRegion I did is to call 
> xen_map_device_mmio() to map the resource specificied in OperationRegion if 
> it's dom0 running under XEN in acpi_ex_system_memory_space_handler().  But 
> this is a fairly generic ACPI code path.  Looking for achitectural suggestion 
> to properly handle OperationRegion for Xen on ARM.

The ACPI code path obviously calls the underlaying OS code to map it.
Could this path have an wrapper around it (so one could register
different underlaying 'map_device_mmio' function calls)?

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

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