Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP3:GA
xen.950
55780b97-EFI-support-default-attributes-to-map-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 55780b97-EFI-support-default-attributes-to-map-Runtime-service-areas.patch of Package xen.950
# Commit 74cdad5dae72c78af4f6b343f38fd55e6a526ab1 # Date 2015-06-10 12:04:07 +0200 # Author Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> # Committer Jan Beulich <jbeulich@suse.com> EFI: support default attributes to map Runtime service areas with none given From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> For example on Dell machines we see: (XEN) 00000fed18000-00000fed19fff type=11 attr=8000000000000000 (XEN) Unknown cachability for MFNs 0xfed18-0xfed19 Let's allow them to be mapped as UC. We also alter the 'efi-rs' to be 'efi=rs' or 'efi=no-rs'. Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> --- a/docs/misc/xen-command-line.markdown +++ b/docs/misc/xen-command-line.markdown @@ -523,12 +523,24 @@ Either force retrieval of monitor EDID i disable it (edid=no). This option should not normally be required except for debugging purposes. -### efi-rs -> `= <boolean>` +### efi +> `= List of [ rs | attr ]` + +All options are of boolean kind and can be prefixed with `no-` to +effect the inverse meaning. + +> `rs` > Default: `true` -Force or disable use of EFI runtime services. +>> Force or disable use of EFI runtime services. + +> `attr=uc` + +> Default: `off` + +>> Allows mapping of RuntimeServices which have no cachability attribute +>> set as UC. ### extra\_guest\_irqs > `= [<domU number>][,<dom0 number>]` --- a/xen/arch/x86/efi/boot.c +++ b/xen/arch/x86/efi/boot.c @@ -1531,7 +1531,31 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SY static bool_t __initdata efi_rs_enable = 1; -boolean_param("efi-rs", efi_rs_enable); +static bool_t __initdata efi_map_uc; + +static void __init parse_efi_param(char *s) +{ + char *ss; + + do { + bool_t val = !!strncmp(s, "no-", 3); + + if ( !val ) + s += 3; + + ss = strchr(s, ','); + if ( ss ) + *ss = '\0'; + + if ( !strcmp(s, "rs") ) + efi_rs_enable = val; + else if ( !strcmp(s, "attr=uc") ) + efi_map_uc = val; + + s = ss + 1; + } while ( ss ); +} +custom_param("efi", parse_efi_param); #ifndef USE_SET_VIRTUAL_ADDRESS_MAP static __init void copy_mapping(unsigned long mfn, unsigned long end, @@ -1629,9 +1653,11 @@ void __init efi_init_memory(void) prot |= _PAGE_PWT | _PAGE_PCD | MAP_SMALL_PAGES; else { - printk(XENLOG_ERR "Unknown cachability for MFNs %#lx-%#lx\n", - smfn, emfn - 1); - continue; + printk(XENLOG_ERR "Unknown cachability for MFNs %#lx-%#lx%s\n", + smfn, emfn - 1, efi_map_uc ? ", assuming UC" : ""); + if ( !efi_map_uc ) + continue; + prot |= _PAGE_PWT | _PAGE_PCD | MAP_SMALL_PAGES; } if ( desc->Attribute & EFI_MEMORY_WP )
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor