[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v1 3/3] efi: Implement 'efi=attr' Xen command line to map Runtime services with no attributes.
For example on Dell machines we see: (XEN) 00000fed18000-00000fed19fff type=11 attr=8000000000000000 (XEN) Unknown cachability for MFNs 0xfed18-0xfed19 Lets allow them to be mapped as WB. We also alter the 'efi-rs' to be 'efi=rs' or 'efi=no-rs'. Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> --- docs/misc/xen-command-line.markdown | 18 +++++++++++++++--- xen/common/efi/boot.c | 35 +++++++++++++++++++++++++++++++---- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/docs/misc/xen-command-line.markdown b/docs/misc/xen-command-line.markdown index 1dda1f0..baf0a84 100644 --- a/docs/misc/xen-command-line.markdown +++ b/docs/misc/xen-command-line.markdown @@ -617,12 +617,24 @@ Either force retrieval of monitor EDID information via VESA DDC, or 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` + +> Default: `false` + +>> Allows mapping of RuntimeServices which have no cachability attribute +>> set as UC. ### extra\_guest\_irqs > `= [<domU number>][,<dom0 number>]` diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c index cf3464b..753df91 100644 --- a/xen/common/efi/boot.c +++ b/xen/common/efi/boot.c @@ -1105,7 +1105,33 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) #ifndef CONFIG_ARM /* TODO - runtime service support */ static bool_t __initdata efi_rs_enable = 1; -boolean_param("efi-rs", efi_rs_enable); +static bool_t __initdata efi_attr; + +static void __init parse_efi_param(char *s) +{ + char *ss; + int val; + + do { + val = !!strncmp(s, "no-", 3); + if ( !val ) + s += 3; + + ss = strchr(s, ','); + if ( ss ) + *ss = '\0'; + + if ( !parse_bool(s) ) + efi_rs_enable = 0; + else if ( !strcmp(s, "rs") ) + efi_rs_enable = val; + else if ( !strcmp(s, "attr") ) + efi_attr = 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, @@ -1209,9 +1235,10 @@ 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_attr ? "assuming WB" : ""); + if ( !efi_attr ) + continue; } if ( desc->Attribute & EFI_MEMORY_WP ) -- 2.1.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |