From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: Xen 4.0 crashes with pvops kernel Date: Wed, 16 Jun 2010 15:36:24 +0100 Message-ID: <4C18FD880200007800006B5F@vpn.id2.novell.com> References: <4C17932F0200007800006821@vpn.id2.novell.com> <4C179A47020000780000683A@vpn.id2.novell.com> <4C17A2F9020000780000688F@vpn.id2.novell.com> <20100615151534.GB4901@phenom.dumpdata.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <20100615151534.GB4901@phenom.dumpdata.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Konrad Rzeszutek Wilk Cc: Cris Daniluk , "xen-devel@lists.xensource.com" , Keir Fraser , Jeremy Fitzhardinge List-Id: xen-devel@lists.xenproject.org >>> On 15.06.10 at 17:15, Konrad Rzeszutek Wilk = wrote: >> >>> Dom0 to map the IO-APIC space read-only? Perhaps even > .. snip >> Actually, that's a difference to non-pv-ops that I strongly >> believe should be fixed: While in the traditional kernel >> __direct_remap_pfn_range() is used to establish I/O memory >> mappings (and hence there is a way to propagate errors), the >> pv-ops kernel appears to use ioremap_page_range() - just like >> native - which can only return -ENOMEM (upon page table >> allocation failure), due to the lack of a return value from >> set_pte_at(). >>=20 >> But then again I must be missing something here, since >> xen_set_pte_at() falls back to xen_set_pte() if the hypercall >> it tries first fails, and that one would fault when establishing >> the mapping, not when trying to first use it. Jeremy? >=20 > Take a look at xen_set_fixmap, which I think is used for most of those > special addresses. It is mapped to a null-space for the IO APIC > addresses. I don't think that code matters here: execution goes through acpi_os_map_memory(), and at the time the problem talked about here happens I think the ioremap() in there ought to be taken. Jan