[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] x86/pv: Inject #GP for implicit grant unmaps
- To: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>
- From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
- Date: Mon, 25 Jul 2022 18:50:13 +0100
- Authentication-results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
- Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Jan Beulich <JBeulich@xxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Juergen Gross <jgross@xxxxxxxx>
- Delivery-date: Mon, 25 Jul 2022 17:50:52 +0000
- Ironport-data: A9a23:QxvQv646aA6FMbXoHhzTVAxRtEPHchMFZxGqfqrLsTDasY5as4F+v mofCGGHbqnZNmHzL9p/Ydu/9BgDu8XVz9MwQFE6pHswHi5G8cbLO4+Ufxz6V8+wwmwvb67FA +E2MISowBUcFyeEzvuVGuG96yM6jclkf5KkYMbcICd9WAR4fykojBNnioYRj5VhxNO0GGthg /uryyHkEALjimUc3l48sfrZ8ksw5qmq4lv0g3RlDRx1lA6G/5UqJMp3yZGZdxPQXoRSF+imc OfPpJnRErTxpkpF5nuNy94XQ2VSKlLgFVHmZkl+AsBOtiNqtC0qupvXAdJHAathZ5dlqPgqo DlFncTYpQ7EpcQgksxFO/VTO3kW0aGrZNYriJVw2CCe5xSuTpfi/xlhJBsTMNUipcgoPXpL8 u4RBw1QSRrYwO3jldpXSsE07igiBMziPYdZsXB81zDJS/0hRPgvQY2Tu4Uehm1pwJkTQ7COP KL1ahI2BPjESzRJNk0aF9QVm+Cwi2OkWzZZtEiUtew85G27IAlZj+a2YIKMIITiqcN9o37Fv U/o337AHksWE9Ch7yS53CiUr7qa9c/8cN1LT+DpnhJwu3Wx7GEODBwdVXOgvOK0zEW5Xrp3K UMO/TE1hbMv70HtRd74NzWorXjBshMCVt54F+wh9BrL2qfS+xyeBGUPUnhGctNOnNAybSwn0 BmOhdyBONB0mOTLEzTHrO7S9G7sf3hORYMfWcMaZVEg7oHZ/69ssgnKScRqP5PoqdeuXj6ll lhmsxMCa6UvYd8jjvvmrQya32z3/PAlXSZuuFyJAzvNAhdRIdf8Otf2sQWzAeNodt7xc7WXg JQTdyFyBsgqBIrFqiGCSf5l8FqBt6fca220bbKC8vAcG9WRF52LJ9k4DMlWfhsBDyr9UWaBj LXvkQ1Q/oRPG3ChcLV6ZYm8Y+xzk/WwS4S6CaqENooXCnSUSONg1Hg1DXN8Iki3yBR8+U3BE czznTmQ4YYyVv08kWveqxY12r433CEurV7uqWTA503+idK2OS/KIYrpxXPUMYjVGovY/1iOm zueXuPWoyhivBrWOHCPqdBJcwFVfBDWx/ne8qRqSwJKGSI+cElJNhMb6ep4E2C5t8y5Ttv1w 0w=
- Ironport-hdrordr: A9a23:5DGMXqMSl6LXzMBcTs+jsMiBIKoaSvp037Eqv3oRdfUzSL3/qy nOpoV96faaskdzZJhNo7+90cq7MBfhHPxOkOss1N6ZNWGM0gbFEGgL1/qa/9SKIU3DH4Bmu5 uIC5IObeHNMQ==
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
This is a debug behaviour to identify buggy kernels. Crashing the domain is
the most unhelpful thing to do, because it discards the relevant context.
Instead, inject #GP[0] like other permission errors in x86. In particular,
this lets the kernel provide a backtrace that's actually helpful to a
developer trying to figure out what's going wrong.
As a bugfix, this always injects #GP[0] to current, not l1e_owner. It is not
l1e_owner's fault if dom0 using superpowers triggers an implicit unmap.
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
CC: Jan Beulich <JBeulich@xxxxxxxx>
CC: Roger Pau Monné <roger.pau@xxxxxxxxxx>
CC: Wei Liu <wl@xxxxxxx>
CC: Juergen Gross <jgross@xxxxxxxx>
This is a prerequisite to investigating
https://github.com/QubesOS/qubes-issues/issues/7631 which is looking like an
error in Linux's gntdev driver.
---
xen/arch/x86/mm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 5b81d5fbdbb2..b3393385ffb6 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -1232,7 +1232,7 @@ void put_page_from_l1e(l1_pgentry_t l1e, struct domain
*l1e_owner)
gdprintk(XENLOG_WARNING,
"Attempt to implicitly unmap a granted PTE %" PRIpte "\n",
l1e_get_intpte(l1e));
- domain_crash(l1e_owner);
+ pv_inject_hw_exception(TRAP_gp_fault, 0);
}
#endif
--
2.11.0
|