From: "Roger Pau Monné" <roger.pau@citrix.com> To: Jan Beulich <jbeulich@suse.com> Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, Kevin Tian <kevin.tian@intel.com>, Jun Nakajima <jun.nakajima@intel.com>, Tim Deegan <tim@xen.org> Subject: Re: [PATCH v4] VMX: use a single, global APIC access page Date: Tue, 13 Apr 2021 12:18:39 +0200 [thread overview] Message-ID: <YHVv/wyD6BphWaU/@Air-de-Roger> (raw) In-Reply-To: <c07396f2-b0c5-092b-4e3e-5f452c453e56@suse.com> On Tue, Apr 13, 2021 at 11:24:09AM +0200, Jan Beulich wrote: > On 12.04.2021 17:31, Roger Pau Monné wrote: > > On Mon, Apr 12, 2021 at 12:40:48PM +0200, Jan Beulich wrote: > >> The address of this page is used by the CPU only to recognize when to > >> access the virtual APIC page instead. No accesses would ever go to this > >> page. It only needs to be present in the (CPU) page tables so that > >> address translation will produce its address as result for respective > >> accesses. > >> > >> By making this page global, we also eliminate the need to refcount it, > >> or to assign it to any domain in the first place. > >> > >> Signed-off-by: Jan Beulich <jbeulich@suse.com> > >> Reviewed-by: Kevin Tian <kevin.tian@intel.com> > >> --- > >> v4: Set PGC_extra on the page. Make shadow mode work. > >> v3: Split p2m insertion change to a separate patch. > >> v2: Avoid insertion when !has_vlapic(). Split off change to > >> p2m_get_iommu_flags(). > >> --- > >> I did further consider not allocating any real page at all, but just > >> using the address of some unpopulated space (which would require > >> announcing this page as reserved to Dom0, so it wouldn't put any PCI > >> MMIO BARs there). But I thought this would be too controversial, because > >> of the possible risks associated with this. > > > > Really seems more trouble than reward. Also there are systems with > > MMIO regions in holes on the memory map, like the issue I had with the > > Intel pinctrl stuff that had an MMIO region in a hole on the memory > > map [0], so I'm not sure Xen would be in a position to select a > > suitable unpopulated page anyway. > > > > [0] https://lore.kernel.org/xen-devel/YFx80wYt%2FKcHanC7@smile.fi.intel.com/ > > Yeah, I had seen that. What I'm having trouble to understand is how the > OS will know to avoid that range for e.g. placing BARs. No idea really, I assume they expect that you parse all possible ACPI devices from the dynamic tables before deciding on any BAR placements? I still consider a bug that the pinctrl MMIO region is not marked as reserved in the memory map. > >> + { > >> + const struct page_info *pg = mfn_to_page(mfn); > >> + > >> + if ( !page_get_owner(pg) && (pg->count_info & PGC_extra) ) > >> + { > >> + ASSERT(type == p2m_mmio_direct); > >> + return 0; > > > > Are there any other pages that could pass this check? I don't think > > so, but wanted to assert. > > "Normal" extra pages have an owner, so no, there aren't any others. > If and when any appear, this may need further customizing, albeit > generally I'd hope further pages matching this pattern would also > want similar treatment. I wonder whether we want to add an assert here to make sure only the APIC access page receives this special handling by the shadow code, but maybe that's a bit too much? Thanks, Roger.
next prev parent reply other threads:[~2021-04-13 10:19 UTC|newest] Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-02-22 10:55 [PATCH v3 0/2] VMX: apic access page handling adjustments Jan Beulich 2021-02-22 10:56 ` [PATCH v3 1/2][4.15] VMX: delay p2m insertion of APIC access page Jan Beulich 2021-02-22 11:25 ` Ian Jackson 2021-02-22 14:05 ` Jan Beulich 2021-02-22 17:17 ` Ian Jackson 2021-02-22 12:15 ` Roger Pau Monné 2021-02-25 8:44 ` Jan Beulich 2021-02-26 7:06 ` Tian, Kevin 2021-02-22 10:57 ` [PATCH v3 2/2] VMX: use a single, global " Jan Beulich 2021-03-01 2:34 ` Tian, Kevin 2021-03-01 8:18 ` Jan Beulich 2021-04-12 10:40 ` [PATCH v4] " Jan Beulich 2021-04-12 15:31 ` Roger Pau Monné 2021-04-13 9:24 ` Jan Beulich 2021-04-13 10:18 ` Roger Pau Monné [this message] 2021-04-13 12:03 ` Jan Beulich 2021-04-13 13:03 ` Roger Pau Monné 2021-04-17 19:24 ` Tim Deegan 2021-04-19 11:25 ` Jan Beulich 2021-04-22 7:42 ` Tim Deegan 2021-04-22 9:38 ` Jan Beulich 2021-04-22 15:05 ` Tim Deegan 2021-04-23 10:51 ` [PATCH v4 0/3] VMX APIC access page and shadow adjustments Jan Beulich 2021-04-23 10:52 ` [PATCH v4 1/3] VMX: use a single, global APIC access page Jan Beulich 2021-04-23 14:17 ` Roger Pau Monné 2021-04-23 14:42 ` Jan Beulich 2021-04-26 17:55 ` Tim Deegan 2021-04-25 1:27 ` Tian, Kevin 2021-04-26 17:53 ` Tim Deegan 2021-04-23 10:53 ` [PATCH v4 2/3] x86/shadow: re-use variables in shadow_get_page_from_l1e() Jan Beulich 2021-04-23 10:54 ` [PATCH v4 3/3] x86/shadow: streamline shadow_get_page_from_l1e() Jan Beulich 2021-04-23 11:00 ` Really v5 (was: [PATCH v4 0/3] VMX APIC access page and shadow adjustments) Jan Beulich
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=YHVv/wyD6BphWaU/@Air-de-Roger \ --to=roger.pau@citrix.com \ --cc=andrew.cooper3@citrix.com \ --cc=george.dunlap@citrix.com \ --cc=jbeulich@suse.com \ --cc=jun.nakajima@intel.com \ --cc=kevin.tian@intel.com \ --cc=tim@xen.org \ --cc=wl@xen.org \ --cc=xen-devel@lists.xenproject.org \ --subject='Re: [PATCH v4] VMX: use a single, global APIC access page' \ /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
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).