All of lore.kernel.org
 help / color / mirror / Atom feed
* memory map issues with PV PCI passthrough
@ 2011-12-08 14:39 Daniel De Graaf
  2011-12-08 14:47 ` Ian Campbell
  2011-12-14 21:53 ` Konrad Rzeszutek Wilk
  0 siblings, 2 replies; 5+ messages in thread
From: Daniel De Graaf @ 2011-12-08 14:39 UTC (permalink / raw)
  To: xen-devel

I have a system with several reserved ranges low in the e820 map which
cause problems when starting PV domains with PCI devices. The machine
memory map looks like:

(XEN)  0000000000000000 - 0000000000060000 (usable)
(XEN)  0000000000060000 - 0000000000068000 (reserved)
(XEN)  0000000000068000 - 000000000009ac00 (usable)
(XEN)  000000000009ac00 - 00000000000a0000 (reserved)
(XEN)  00000000000e0000 - 0000000000100000 (reserved)
(XEN)  0000000000100000 - 0000000000800000 (usable)
(XEN)  0000000000800000 - 000000000087d000 (unusable)
(XEN)  000000000087d000 - 0000000000f00000 (usable)
(XEN)  0000000000f00000 - 0000000001000000 (reserved)
(XEN)  0000000001000000 - 0000000020000000 (usable)
(XEN)  0000000020000000 - 0000000020200000 (reserved)
(XEN)  0000000020200000 - 0000000040000000 (usable)
(XEN)  0000000040000000 - 0000000040200000 (reserved)
(XEN)  0000000040200000 - 00000000c95d6000 (usable)
(XEN)  00000000c95d6000 - 00000000c961a000 (reserved)
(XEN)  00000000c961a000 - 00000000c99b7000 (usable)
(XEN)  00000000c99b7000 - 00000000c99e7000 (reserved)
(XEN)  00000000c99e7000 - 00000000c9be7000 (ACPI NVS)
(XEN)  00000000c9be7000 - 00000000c9bff000 (ACPI data)
(XEN)  00000000c9bff000 - 00000000c9c00000 (usable)
(XEN)  00000000c9f00000 - 00000000ca000000 (reserved)
(XEN)  00000000cb000000 - 00000000cf200000 (reserved)
(XEN)  00000000fed1c000 - 00000000fed30000 (reserved)
(XEN)  00000000ffc00000 - 00000000ffc20000 (reserved)
(XEN)  0000000100000000 - 000000042e000000 (usable)

When e820_sanitize is called on this memory map to create a PV domain, the
resulting map has only one usable region (0-0xf00000) below 4GB, and Linux
will not boot with this memory map.

I have a patch that reworks e820_sanitize to include later RAM regions as
valid RAM, which works as long as the domain being booted has permission
to map the PFNs from 0x20000-0x20200 and 0x40000-0x40200. If the domain is
not given this permission (the default, since these regions are not part of
the PCI device being passed to the guest) then the hypervisor crashes the
domain when it attempts to map these regions (during init_memory_mapping).

The domain will boot when these regions are not marked as reserved in the
e820 map or when the PFNs 0x20200-0x40000 and 0x40200-0xc95d6 are marked
as unusable. However, it is difficult to make this happen in any general
case without knowing what reserved regions actually need to be marked as
reserved in the guest.

If PCI hot-add is not needed, the problem becomes simpler: the PCI regions
for assigned devices can be included in the e820 map and other regions can
be ignored (marking as RAM so that the guest does not attempt direct map).

Any suggestions on the best way to resolve this?

-- 
Daniel De Graaf
National Security Agency

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-12-14 22:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-08 14:39 memory map issues with PV PCI passthrough Daniel De Graaf
2011-12-08 14:47 ` Ian Campbell
2011-12-08 14:54   ` Daniel De Graaf
2011-12-14 21:53 ` Konrad Rzeszutek Wilk
2011-12-14 22:36   ` Daniel De Graaf

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.