All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Baldwin <jhb@freebsd.org>
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: julien.grall@citrix.com, freebsd-xen@freebsd.org,
	freebsd-current@freebsd.org, kib@freebsd.org,
	xen-devel@lists.xenproject.org, gibbs@freebsd.org
Subject: Re: [PATCH RFC 01/13] xen: use the hardware e820 map on Dom0
Date: Tue, 21 Jan 2014 13:25:29 -0500	[thread overview]
Message-ID: <201401211325.29460.jhb__45643.2316139855$1390331125$gmane$org@freebsd.org> (raw)
In-Reply-To: <1387884062-41154-2-git-send-email-roger.pau@citrix.com>

On Tuesday, December 24, 2013 6:20:50 am Roger Pau Monne wrote:
> We need to do some tweaking of the hardware e820 map, since the memory
> layout provided by Xen and the e820 map doesn't match.
> 
> This consists in clamping the e820 map so that regions above max_pfn
> are marked as unusuable.
> ---
>  sys/x86/xen/pv.c |   35 +++++++++++++++++++++++++++++++++--
>  1 files changed, 33 insertions(+), 2 deletions(-)
> 
> diff --git a/sys/x86/xen/pv.c b/sys/x86/xen/pv.c
> index 4f7415e..ab4afba 100644
> --- a/sys/x86/xen/pv.c
> +++ b/sys/x86/xen/pv.c
> @@ -297,17 +297,48 @@ static void
>  xen_pv_parse_memmap(caddr_t kmdp, vm_paddr_t *physmap, int *physmap_idx)
>  {
>  	struct xen_memory_map memmap;
> +	unsigned long max_pfn = HYPERVISOR_start_info->nr_pages;
> +	u_int64_t mem_end = ptoa(max_pfn);
>  	u_int32_t size;
> -	int rc;
> +	int rc, mem_op, i;

One minor nit is that it is preferred to not initalize variables in 
declarations style-wise.  Aside from that, this looks fine to me.

>  	/* Fetch the E820 map from Xen */
>  	memmap.nr_entries = MAX_E820_ENTRIES;
>  	set_xen_guest_handle(memmap.buffer, xen_smap);
> -	rc = HYPERVISOR_memory_op(XENMEM_memory_map, &memmap);
> +	mem_op = xen_initial_domain() ?
> +	                XENMEM_machine_memory_map :
> +	                XENMEM_memory_map;
> +	rc = HYPERVISOR_memory_op(mem_op, &memmap);
>  	if (rc)
>  		panic("unable to fetch Xen E820 memory map");
>  	size = memmap.nr_entries * sizeof(xen_smap[0]);
>  
> +	/*
> +	 * This should be improved, Xen provides us with a single
> +	 * chunk of physical memory that goes from 0 to max_pfn,
> +	 * and what we do here is clamp the HW memory map to make
> +	 * sure regions above max_pfn are marked as reserved.
> +	 *
> +	 * TRTTD would be to move the memory not used because of
> +	 * the holes in the HW memory map to the now clamped regions
> +	 * using XENMEM_{decrease/increase}_reservation.
> +	 */
> +	for (i = 0; i < memmap.nr_entries; i++) {
> +		u_int64_t end = xen_smap[i].base + xen_smap[i].length;
> +		if (xen_smap[i].type == SMAP_TYPE_MEMORY) {
> +			if (xen_smap[i].base > mem_end) {
> +				/* Mark as reserved */
> +				xen_smap[i].type = SMAP_TYPE_RESERVED;
> +				continue;
> +			}
> +			if (end > mem_end) {
> +				/* Truncate region */
> +				xen_smap[i].length -= end - mem_end;
> +			}
> +		}
> +	}
> +
> +
>  	bios_add_smap_entries(xen_smap, size, physmap, physmap_idx);
>  }
>  
> -- 
> 1.7.7.5 (Apple Git-26)
> 
> 

-- 
John Baldwin

  parent reply	other threads:[~2014-01-21 19:03 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1387884062-41154-1-git-send-email-roger.pau@citrix.com>
2013-12-24 11:20 ` [PATCH RFC 01/13] xen: use the hardware e820 map on Dom0 Roger Pau Monne
2013-12-24 11:20 ` [PATCH RFC 02/13] ioapic: introduce hooks for some ioapic ops Roger Pau Monne
2013-12-24 11:20 ` [PATCH RFC 03/13] xen: mask event channels while changing affinity Roger Pau Monne
2013-12-24 11:20 ` [PATCH RFC 04/13] xen: implement basic PIRQ support for Dom0 Roger Pau Monne
2014-01-21 18:52   ` John Baldwin
2013-12-24 11:20 ` [PATCH RFC 05/13] xen: implement Xen IO APIC ops Roger Pau Monne
2013-12-24 11:20 ` [PATCH RFC 06/13] xen: Dom0 console fixes Roger Pau Monne
2013-12-24 11:20 ` [PATCH RFC 07/13] xen: implement IO APIC support in Xen mptable parser Roger Pau Monne
2013-12-24 11:20 ` [PATCH RFC 08/13] xen: change order of Xen intr init and IO APIC registration Roger Pau Monne
2013-12-24 11:20 ` [PATCH RFC 09/13] xen: change quality of the MADT ACPI enumerator Roger Pau Monne
2014-02-08 21:42   ` John Baldwin
     [not found]   ` <1980951.95r2q2cca3@ralph.baldwin.cx>
2014-02-14  1:49     ` Andrew Cooper
     [not found]     ` <52FD7624.90202@citrix.com>
2014-02-14 17:51       ` John Baldwin
     [not found]       ` <201402141251.10278.jhb@freebsd.org>
2014-02-17 16:01         ` Roger Pau Monné
2013-12-24 11:20 ` [PATCH RFC 10/13] xen: add ACPI bus to xen_nexus when running as Dom0 Roger Pau Monne
2013-12-24 11:21 ` [PATCH RFC 11/13] pci: introduce a new event on PCI device detection Roger Pau Monne
2013-12-24 11:21 ` [PATCH RFC 12/13] mca: disable cmc enable on Xen PV Roger Pau Monne
2013-12-24 11:21 ` [PATCH RFC 13/13] xenstore: changes needed to boot in Dom0 mode Roger Pau Monne
     [not found] ` <1387884062-41154-4-git-send-email-roger.pau@citrix.com>
2014-01-03 20:45   ` [PATCH RFC 03/13] xen: mask event channels while changing affinity Konrad Rzeszutek Wilk
     [not found] ` <1387884062-41154-2-git-send-email-roger.pau@citrix.com>
2014-01-21 18:25   ` John Baldwin [this message]
     [not found] ` <1387884062-41154-3-git-send-email-roger.pau@citrix.com>
2014-01-21 18:27   ` [PATCH RFC 02/13] ioapic: introduce hooks for some ioapic ops John Baldwin
     [not found] ` <1387884062-41154-6-git-send-email-roger.pau@citrix.com>
2014-01-21 18:55   ` [PATCH RFC 05/13] xen: implement Xen IO APIC ops John Baldwin
     [not found] ` <1387884062-41154-7-git-send-email-roger.pau@citrix.com>
2014-01-21 19:02   ` [PATCH RFC 06/13] xen: Dom0 console fixes John Baldwin
     [not found] ` <1387884062-41154-8-git-send-email-roger.pau@citrix.com>
2014-02-08 21:36   ` [PATCH RFC 07/13] xen: implement IO APIC support in Xen mptable parser John Baldwin
     [not found] ` <1387884062-41154-9-git-send-email-roger.pau@citrix.com>
2014-02-08 21:37   ` [PATCH RFC 08/13] xen: change order of Xen intr init and IO APIC registration John Baldwin
     [not found] ` <1387884062-41154-11-git-send-email-roger.pau@citrix.com>
2014-02-08 21:50   ` [PATCH RFC 10/13] xen: add ACPI bus to xen_nexus when running as Dom0 John Baldwin
     [not found]   ` <2410827.IqfpSAhe3T@ralph.baldwin.cx>
2014-02-14 10:38     ` Roger Pau Monné
     [not found]     ` <52FDF217.3040005@citrix.com>
2014-02-14 17:50       ` John Baldwin
     [not found] ` <1387884062-41154-12-git-send-email-roger.pau@citrix.com>
2014-02-08 21:57   ` [PATCH RFC 11/13] pci: introduce a new event on PCI device detection John Baldwin
     [not found] ` <1387884062-41154-13-git-send-email-roger.pau@citrix.com>
2014-02-08 22:02   ` [PATCH RFC 12/13] mca: disable cmc enable on Xen PV John Baldwin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='201401211325.29460.jhb__45643.2316139855$1390331125$gmane$org@freebsd.org' \
    --to=jhb@freebsd.org \
    --cc=freebsd-current@freebsd.org \
    --cc=freebsd-xen@freebsd.org \
    --cc=gibbs@freebsd.org \
    --cc=julien.grall@citrix.com \
    --cc=kib@freebsd.org \
    --cc=roger.pau@citrix.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.