[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XEN v4 1/3] xen/arm: Introduce CONFIG_PARTIAL_EMULATION and "partial-emulation" cmd option


  • To: Julien Grall <julien@xxxxxxx>, Ayan Kumar Halder <ayan.kumar.halder@xxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Michal Orzel <michal.orzel@xxxxxxx>
  • Date: Wed, 7 Feb 2024 08:45:19 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=xen.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=s0Au5QSoHwuPeCLBh/jovbIb0s+fFUJga4OVHXVkhzY=; b=jMLKnV9egpqCJCtie9D/+8leIQEYGfFvihFux5iGc2bsBMCCpGFl4zw0z3+OLnilIYYvC6VB8cGHPZZSodONGY5Eu+anATpk3vdtOSjnhQiy0nK0p3tGrbaK1NPUVmtgjFEUmhJbtnAJyLtMD2rMZjLx1fPSs6PZPqXBBomw3kZ6R6vUdaRi4L1tW60LyI1cfwFE/T7Lhy3aC4vRkIPpxD9RvzAaq2J24hhLla9gkGCFMfWLwuEgF0nkCHtQ/KAjZnv74XZvgmY2rIfX7KX3dmCTv3XEVC8J4iUlkMZFiiEBsAIhoII5BYIi/S1qF+zQNxIRGYETe5rv30cCBmRi2g==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bJFIgdrdPxi/QE7uGYChnwcI+AnhQXy1XIGgmIsAauHe0gkLMhubGVgTapmXTKXSd9wJZhEIjiX4Cdd6GkLFzv8EBKJfS/We62llfV6VfOwN+9z6tDpCv/glgfdKVBnbcjPZ+E3Ab9JpHIwltLlvfnjMrCbvibzMhXPX7TZp67yVzyMhZYP2xFqjrhnLQBjaKATnZfJsYsxxo9KTIDkQSvtaIPs5FVm0kRyazFGk8MRLqEYoTkGiX6L7elfIYmpXpXo2x4etq86T3TZudhZ1SVa4X+PEXP7TnfK5AR+Fu9YjMObubkJX28fiM2pPtC5mdUPa561mXvqdSo2wvLu0hg==
  • Cc: <sstabellini@xxxxxxxxxx>, <stefano.stabellini@xxxxxxx>, <Volodymyr_Babchuk@xxxxxxxx>, <bertrand.marquis@xxxxxxx>, <luca.fancellu@xxxxxxx>
  • Delivery-date: Wed, 07 Feb 2024 07:45:40 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Hi Julien,

On 06/02/2024 19:49, Julien Grall wrote:
> 
> 
> Hi Ayan,
> 
> On 31/01/2024 12:10, Ayan Kumar Halder wrote:
>> There can be situations when the registers cannot be emulated to their full
>> functionality. This can be due to the complexity involved. In such cases, one
>> can emulate those registers as RAZ/WI for example. We call them as partial
>> emulation.
>>
>> Some registers are non-optional and as such there is nothing preventing an OS
>> from accessing them.
>> Instead of injecting undefined exception (thus crashing a guest), one may 
>> want
>> to prefer a partial emulation to let the guest running (in some cases 
>> accepting
>> the fact that it might result in unwanted behavior).
>>
>> A suitable example of this (as seen in subsequent patches) is emulation of
>> DBGDTRTX_EL0 (on Arm64) and DBGDTRTXINT(on Arm32). These non-optional
>> registers can be emulated as RAZ/WI and they can be enclosed within
>> CONFIG_PARTIAL_EMULATION.
>>
>> Further, "partial-emulation" command line option allows us to
>> enable/disable partial emulation at run time. While CONFIG_PARTIAL_EMULATION
>> enables support for partial emulation at compile time (i.e. adds code for
>> partial emulation), this option may be enabled or disabled by Yocto or other
>> build systems. However if the build system turns this option on, users
>> can use scripts like Imagebuilder to generate uboot-script which will append
>> "partial-emulation=false" to xen command line to turn off the partial
>> emulation. Thus, it helps to avoid rebuilding xen.
>>
>> By default, "CONFIG_PARTIAL_EMULATION=y" and "partial-emulation=false".
>> This is done so that Xen supports partial emulation. However, customers are
>> fully aware when they enable partial emulation. It's important to note that
>> enabling such support might result in unwanted/non-spec compliant behavior.
> 
> Can you remind me why this is built by default? In particular...
This is the result of RFC discussion we had, where both Bertrand and Stefano 
agreed on having
the Kconfig enabled by default to improve user experience:
Bertrand:
https://lore.kernel.org/xen-devel/C0ADC33B-1966-4D3E-B081-A3AA0C3AE76D@xxxxxxx/
Stefano:
https://lore.kernel.org/xen-devel/alpine.DEB.2.22.394.2312081514450.1703076@ubuntu-linux-20-04-desktop/

~Michal



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.